You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 10:59:53