我正在尝试重复读取整数,对于不是整数的标记,将它们作为字符串读取和处理。我认为以下方法会起作用:
string s;
int x;
while(1) {
if (cin >> x) // try reading as int
cout << "read int: " << x << endl;
else { // try reading as string
cin.clear();
if (cin >> s)
cout << "read string: " << s << endl;
else
break; // eof
}
}
但是,对于输入(末尾有换行符)
1 2 a
它给出了输出
read int: 1
read int: 2
好像清除流之后的状态和之前不完全一样,实际上cin >> s
失败了。为什么会这样,我怎样才能实现我想要的行为?
澄清一下,我无法将字符串解析为 int,因为我还没有“学习”到这一点。