gpt4 book ai didi

c++ - 如何处理这种副作用?

转载 作者:太空狗 更新时间:2023-10-29 21:00:44 25 4
gpt4 key购买 nike

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;

如何更改代码,使 +32423cin 不正确?

最佳答案

您需要准确地决定您需要用户提供的输入是什么,以及什么使它有效。在我看来你想要接受来自用户的整行输入(所以你应该使用 std::getlinestd::string)然后你只想接受完全是 "+""-" 的字符串。

std::string sign;
std::getline(std::cin, sign); // Gather input
if (sign != "+" && sign != "-") { // Parse input
// ...
}
// ...

如@H2C03 所述,将输入和解析分开是个好主意。在这种情况下,解析就像将输入行与字符串 "+""-" 进行比较一样简单。

关于c++ - 如何处理这种副作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21215322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com