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

while循环中cin无法读取输入,程序卡住,求助排查原因

问题分析与解决

你的代码里while循环末尾多了一个分号,这是导致程序卡住的核心原因。

C++里分号代表空语句,while (cin >> s); 相当于把这个空语句作为循环体——程序会反复执行cin >> s读取输入,直到输入流失效(比如按下Ctrl+D/Ctrl+Z触发EOF),才会去执行后面大括号里的代码。这就导致你输入单词后,程序根本不会进入处理逻辑,而是一直卡在循环里重复读取输入。

修正后的代码如下:

#include "../../std_lib_facilities.h"

int main() {
    string s = "";
    string disliked = "Broccoli";

    cout << "Enter a word: ";
    while (cin >> s)
    {
        if (s == disliked) cout << "BLEEP\n";
        else cout << s << '\n';

        cout << "Enter a word: ";
    }

    return 0;
}

去掉循环末尾的分号后,大括号内的代码就成为了while循环的循环体:每成功读取一个单词,就会执行一次处理逻辑,输出对应内容后再提示输入下一个单词,程序就能正常运行了。

内容的提问来源于stack exchange,提问作者Tommy Blake

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 06:22:09