我想以这种格式输入日期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;
}
};
答案 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;