std::cin.get()异常行为:输入q/Q无法终止循环求助
问题分析与解决:输入q/Q无法终止循环的原因
你的代码问题出在while循环的条件判断逻辑上:
原循环条件:
while ((TypedLetter != 'q') || (TypedLetter != 'Q'))
这个条件永远为真,因为任何一个字符都不可能同时等于'q'和'Q'——比如输入'q'时,TypedLetter != 'Q'为真;输入'Q'时,TypedLetter != 'q'为真;输入其他字符时两个条件都为真。所以不管输入什么,循环都会一直执行,无法终止。
正确的逻辑应该是:当输入的字符**既不是'q'也不是'Q'**时,才继续循环,需要把逻辑或||改成逻辑与&&:
while ((TypedLetter != 'q') && (TypedLetter != 'Q'))
修正后的完整代码:
//include std IO header #include <iostream> //start here int main() { int TypedLetter; std::cout << "Press q or Q to end." << std::endl; //wait until user types Q or q TypedLetter = std::cin.get (); while ((TypedLetter != 'q') && (TypedLetter != 'Q')) { TypedLetter = std::cin.get (); } return 0; }
内容的提问来源于stack exchange,提问作者Frank Scrooby
相关产品推荐
相关产品推荐

