char sign;
cout << "Enter '+' for addition or '-' for subtraction: ";
cin >> sign;
if ( sign != '+' && sign != '-' ) {
cout << "you can only enter '+' or '-'!\n";
return 1;
}
如果我输入+32423
,则输入仍然是正确的cin
(它将通过检查),因为+
它将自动设置为sign变量,并且在存在以下情况时也32423
将存储到我的下一个变量中:
cin >> number;
我该如何更改代码,使之+32423
不正确cin
?
您需要准确确定您需要用户输入的内容以及使其有效的原因。就像要接受输入的来自用户的整条生产线(所以你应该使用它的声音,我std::getline
有std::string
),然后你想只接受是完全串"+"
并"-"
。
std::string sign;
std::getline(std::cin, sign); // Gather input
if (sign != "+" && sign != "-") { // Parse input
// ...
}
// ...
正如@ H2C03所提到的,将输入和解析分开是个好主意。在这种情况下,解析就像将输入行与字符串"+"
和进行比较一样简单"-"
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句