我正在尝试编写一个代码来提示用户从 cin 输入。
int main()
{
int year;
cout << "Enter a valid year: ";
cin >> year;
while (cin.fail())
{
cout << "Re-enter a valid value! ";
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我输入非整数类型时,编译器会不断打印“重新输入有效值!”这一行。我不知道我的代码有什么问题!有人可以纠正它吗?非常感谢。
尝试这个:
bool done = false;
int year;
for (std::string line;
std::cout << "Enter a year: " && std::getline(std::cin, line); )
{
std::istringstream iss(line);
if (iss >> year >> std::ws && iss.get() == EOF) { done = true; break; }
std::cerr << "Failed to parse input '" << line << "', please try again.\n";
}
if (!done) { std::cerr << "Premature end of input.\n"; }
else { std::cout << "Input: " << year << "\n"; }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8946 次 |
| 最近记录: |