首页 > 解决方案 > 我们如何在没有 stoi 命令的情况下将字符串转换为整数 / 以输入日期和输出整数

问题描述

#include <iostream>

using namespace std;


int daysMonth (int month) // the part to clarify 
{
    if (month >= 1 && month <= 12){
        if (month == 2)
            return 28;
        if (month  == 4 || month  == 6 || month  == 9 || month  == 11)
            return 30;

            return 31;
    }
    return 0;
}


void nextDay (int day, int month, int year) // nextday conditions
{
    int daysOfMonth = daysMonth(month);

        if ((year % 4 == 0) && (year % 100 != 0) || year % 400 == 0)
        {
            if (day == 28){
                day = 29;
                month = month;
                year = year;
            }
        }
        if (day != daysOfMonth)
        {
            day = day + 1;
            month = month;
            year = year;
        }
        if (day == daysOfMonth)
        {
            day = 1;
            month = month + 1;
            year = year;
        }
        if ((month == 12) && (day == 31))
        {
            day = 1;
            month = 1;
            year = year + 1;
        }

    cout << "Next day is : " << day << "/" << month << "/" << year << endl;
}
int main(){
    int day;
    int month;
    int year;

    cout << "Enter a date : " << endl;

    cin >> day;
    cin >> month;
    cin >> year;

    cout << "Your chosen date is :  " << day << "/" << month << "/" << year << endl;

    if (day >= 1 && day <= 31 && month >= 1 && month <= 12)
    {
        nextDay(day, month, year);
    }
    else
        cout << "Invalid date" << endl;

}

现在我的问题如下:如果我进入 28/02/2016,我将得到 30/02/2016。

另一个问题是:

有没有办法以 DD/MM/YYYY 格式获取日期,然后使用 stoi 之类的命令获取 DD MM YYYY - 我提到该命令对我不起作用。

如果我输入 28/02/2016,我试图像往常一样获得结果,我应该得到 29/02/2016 - 我知道还有另一个条件可以增加 day + 1,但为什么没有跳过?

标签: c++

解决方案


推荐阅读