通过 cin 验证

Validation via cin

我是 C++ 的新手,正在试验...

我正在尝试通过 cin:

验证输入
if(!cin){  
    cin.clear(); // without this: infinite
    cin.ignore();
    returnText = "Sorry, I can`t do that. :(";
             
}else if(input == sum){
    returnText = "Great, you did it! :)";
          
}else{
    returnText =  "Sorry, the correct result would have been " + to_string(sum) + ". :("; 
}
         
cout << returnText << "\n\n";

它确实有效(不知何故),除了它为每个无效字符循环。

有没有办法只在按 Enter 后检查?然后对于整个 cin 而不是字符?

(可能很傻,因为它代表字符,但会很好)

你应该使用

cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

而不是

cin.ignore();

忽略直到换行符,而不是只忽略一个字符。