如何在c ++中输入同一行?

时间:2015-10-27 16:02:35

标签: c++

  
    

我想以这种格式输入日期2/11/2015。我该怎么做呢?     C ++?谢谢以下方法无效。

  
cin>>day >>month >>year ;
  

并且用户也不必按Enter键。

     

我的代码是

#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;
    }
};

2 个答案:

答案 0 :(得分:1)

C ++本身并不理解文本日期;您将需要使用提供此功能的库,或者自己创建一个函数来在文本格式和内部整数格式之间进行转换(这通常是秒或毫秒的数量,取决于平台,因为“Epoch”( 1970年1月1日00:00))。

为此,您需要:

  • 将日期收集为单个字符串或字符数组
  • 将日期分成其成员日/月/年
  • 将此日期计算为自纪元以来的秒数

说完这一切之后,使用库的第一个选项可能是最好的,因为它还包含在字符串和内部日期格式之间切换的功能;您选择哪个库取决于您,并且在很大程度上取决于您编写的平台。

答案 1 :(得分:0)

您可以使用虚拟char变量读取/分隔符:

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

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