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
相关产品推荐
相关产品推荐

