3

如何使用 C++ 实现以下目标cin

scanf("%d:%d:%d",&day,&month,&year);

此外,如何检查输入是数字、字符还是浮点数,比如说如果我有一行,比如scanf("%d",&a);用户输入了一个字符,那么我该如何停止它并提示用户获取正确的输入。

4

3 回答 3

4

我可能会读整行,或者在这种情况下可能只是一个以空格分隔的字符串,然后用...解析sscanfsscanf#include <cstring>

string datestr;
cin >> datestr;
int result = sscanf(datestr.c_str(), " %d:%d:%d", &day, &month, &year);

对于更多的 C++ 解决方案,Boost 有一些东西,虽然我自己没有使用过。

于 2013-03-09T18:16:42.117 回答
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;
于 2013-03-09T19:05:41.380 回答
-3

它就像这样简单:

cin >> day  >>  month >> year;

干杯:)

于 2013-03-09T18:05:51.627 回答