我遇到了C ++练习的问题。
在练习中,我应该让用户输入日期。
问题是,当我使用cin
时,当我按下回车键时,控制台会向下跳一行,因此它会变成这样:
Enter date please: 12
/23
/2001
而不是:12/23/2001
有人可以帮我解决这个问题。
答案 0 :(得分:6)
您没有说明如何使用cin
来阅读日期。试试这个:
char ignored;
int day, month, year;
std::cin >> month >> ignored >> day >> ignored >> year;
然后,当您运行程序时,不要按Enter键,直到您键入整个日期。
答案 1 :(得分:4)
Robᵩ有一个很好的答案,但我会扩展它。使用结构和重载运算符,并检查斜杠。
struct date {
int day;
int month;
int year;
};
std::istream& operator>>(std::istream& in, date& obj) {
char ignored1, ignored2;
in >> obj.day>> ignored1 >> obj.month>> ignored2 >> obj.year;
if (ignored1!='/' || ignored2!='/')
in.setstate(in.rdstate() | std::ios::badbit);
return in;
}
如果你有streaming in literals的代码,可以简化为:
std::istream& operator>>(std::istream& in, date& obj) {
return in >> obj.day>> '/' >> obj.month>> '/' >> obj.year;
}