提示用户输入直到正确的 C++

bff*_*f01 -2 c++ input

我正在尝试编写一个代码来提示用户从 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)

但是,当我输入非整数类型时,编译器会不断打印“重新输入有效值!”这一行。我不知道我的代码有什么问题!有人可以纠正它吗?非常感谢。

Ker*_* SB 5

尝试这个:

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)

  • 你让我开心。最后有人对 cin 进行了适当的输入处理;)。我也为 bffaf01 感到难过,因为他可能无法从您的代码中理解任何内容。 (3认同)