Я хочу ввести дату в этом формате 11.02.2015. как я могу это сделать, используя C ++? Спасибо. Следующий метод не работает.

cin>>day >>month >>year ;

а также пользователю не нужно нажимать ввод.

мой код

#include <iostream>
using namespace std;

class Date
{
private :
    int day,month,year;
    char slash;
public :
    void inputdate(void)
    {
        cout<<"Enter Date in Formate (day/month/year)"<<endl;
        cin >> day >> slash >> month >> slash >> year;
    }
    void checkdate(void)
    {
        if (day<=0 || day>=32)
        {
            cout<<"Day is Wrong ! "<<endl;
        }
        if (month==2 && day>=29)
        {
            cout<<"February can have max 28 days !"<<endl;
        }
        if (month<=0 || month>=13)
        {
            cout<<"Month is wrong !"<<endl;
        }
        if (year<=1799 || year>=3000)
        {
            cout<<"Year is Wrong !"<<endl;
        }
        if ((month==4 || month==6 || month==9 || month==11)&&(day>30))
        {
            cout<<"Day is wrong ! September ,April ,June and November can have maximum 30 days ."<<endl;
        }
    }
    void showdate(void)
    {
        checkdate();
        cout<<"Date is : "<<day<<"/"<<month<<"/"<<year<<endl;
    }
};
c++
-2
RAO HAMMAS 27 Окт 2015 в 19:02

2 ответа

Лучший ответ

Вы можете использовать фиктивную переменную char для чтения после разделителя /:

int day, month, year;
char slash; // dummy to skip past the '/'

cin >> day >> slash >> month >> slash >> year;
0
Galik 27 Окт 2015 в 16:21

C ++ по своей сути не понимает текстовые даты; вам нужно будет либо использовать библиотеку, которая предоставляет эту функциональность, либо создать функцию самостоятельно для преобразования между текстовым форматом и внутренним целочисленным форматом (который обычно представляет собой количество секунд или миллисекунд, в зависимости от платформы, так как «Эпоха» ( 00:00 1 января 1970 г.)).

Для этого вам потребуется:

  • Собирать дату как одну строку или массив символов
  • Разделите дату на составляющие день / месяц / год
  • Вычислите эту дату как количество секунд с начала Эпохи.

Сказав все это, первый вариант использования библиотеки, вероятно, лучше всего, поскольку он также будет содержать функции для переключения между строковым и внутренним форматом даты; какую библиотеку вы выберете, зависит от вас и во многом зависит от платформы, для которой вы кодируете.

1
SteJ 27 Окт 2015 в 16:07