C++代码中bool变量correct始终为true,求问题原因排查
问题根源:输入处理逻辑错误
问题出在输入处理部分,和scoreSystem()函数没有关系。
错误原因说明
你当前写的if (std::cin >> answer),这个判断的是输入操作是否成功完成——只要用户输入了合法的字符串(不管内容对错),这个条件都会成立,correct就会被设为true,所以无论输入什么都会执行加分逻辑。
你真正需要实现的是判断用户输入的内容是否等于正确答案,而不是判断输入操作本身是否成功。
修正方案
不要直接用全局变量answer存储用户输入,单独定义变量接收用户输入,再和正确答案对比:
int main() { std::cout << "What is the capital of france?\n\n"; std::string userInput; // 用独立变量存储用户输入,避免覆盖正确答案 if (std::cin >> userInput) { // 对比用户输入与正确答案,设置correct的取值 correct = (userInput == answer); } else { // 处理输入失败的情况(比如输入非法字符) correct = false; } scoreSystem(); std::cout << score; return 0; }
如果需要支持大小写不敏感的判断(比如用户输入Paris也判定正确),可以额外增加字符串大小写转换的逻辑,将用户输入统一转为小写后再和"paris"对比。
内容的提问来源于stack exchange,提问作者Ren
相关产品推荐
相关产品推荐

