C ++中的I / O格式

时间:2013-03-09 18:03:15

标签: c++

如何使用cin在C ++中实现以下功能?

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

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

3 个答案:

答案 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;

干杯:)