如何使用cin
在C ++中实现以下功能?
scanf("%d:%d:%d",&day,&month,&year);
此外如何检查输入是一个数字,字符还是浮点数,比如如果用户输入一个字符,如果我有scanf("%d",&a);
这样的行,那么我怎么能阻止它并提示用户获取正确的输入。
答案 0 :(得分:4)
我可能会读完整行,或者在这种情况下只是一个以空格分隔的字符串,然后用sscanf
解析...如果你熟悉sscanf
,没有错有一点#include <cstring>
, 标准毕竟......
string datestr;
cin >> datestr;
int result = sscanf(datestr.c_str(), " %d:%d:%d", &day, &month, &year);
对于更多的C ++解决方案,Boost has something,虽然我自己没有使用它。
答案 1 :(得分:2)
注意:以下是未经测试的:
unsigned int day;
unsigned int month;
unsigned int year;
cin >> day;
cin.ignore(20,':'); // Ignore everything up to and including the ':'.
cin >> month;
cin.ignore(20, ':');
cin >> year;
另请查看“skipws”。使用skipws
您可以将所有内容放在一行:
char colon;
cin >> day >> colon >> month >> colon >> year;
答案 2 :(得分:-3)
这很简单:
cin >> day >> month >> year;
干杯:)