【发布时间】:2011-03-18 03:05:20
【问题描述】:
我按照http://www.parashift.com/c++-faq-lite/input-output.html中的方法做了如下验证,但是还是不行:
if (!(cin >> hex >>address1))
{
cout << "Invalid input.";
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
它一直将剩余的输入携带到下一个输入,从而使下一个输入不能被用户输入,即使 std::cin 被清除和忽略。
【问题讨论】:
-
“剩余输入”是什么意思?它应该会占用所有内容,直到您按 Enter 或字符串中有空格。
-
表示我在上面的输入之后还有一个cin,并且之前的输入被应用到了当前的cin,用户没有机会输入。
-
您是否尝试在两者之间添加
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');之类的声明,或者只是一个std::cin.ignore()?