如何使用 C++ 实现以下目标cin
?
scanf("%d:%d:%d",&day,&month,&year);
此外,如何检查输入是数字、字符还是浮点数,比如说如果我有一行,比如scanf("%d",&a);
用户输入了一个字符,那么我该如何停止它并提示用户获取正确的输入。
如何使用 C++ 实现以下目标cin
?
scanf("%d:%d:%d",&day,&month,&year);
此外,如何检查输入是数字、字符还是浮点数,比如说如果我有一行,比如scanf("%d",&a);
用户输入了一个字符,那么我该如何停止它并提示用户获取正确的输入。
我可能会读整行,或者在这种情况下可能只是一个以空格分隔的字符串,然后用...解析sscanf
它sscanf
#include <cstring>
string datestr;
cin >> datestr;
int result = sscanf(datestr.c_str(), " %d:%d:%d", &day, &month, &year);
对于更多的 C++ 解决方案,Boost 有一些东西,虽然我自己没有使用过。
注意:以下内容未经测试:
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;
它就像这样简单:
cin >> day >> month >> year;
干杯:)