C++如何让cout输出后暂停等待用户输入,避免后续内容提前打印
问题分析
- 缺少用户输入读取逻辑:你定义了
INPUT字符串变量,但代码中没有实现从控制台读取用户输入的逻辑,变量默认是空值,原有判断分支不会触发。 - 相同条件的独立
if分支重复执行:两个INPUT == "1"的判断是完全独立的平级分支,只要条件满足就会依次执行两个分支的输出逻辑,所以输入1时会同时打印两行内容。
解决方案
根据你的需求,输入1后先输出选择提示,再接收第二次用户输入决定最终输出内容,修改后的代码如下:
#include <iostream> using namespace std; int main() { string INPUT; std::cout << "exp?:" << std::endl; std::cout << "[1] r" << std::endl; std::cout << "[2] j" << std::endl; // 读取第一次用户输入 cin >> INPUT; if (INPUT == "1") { cout << "how your day[1]good[2] fnef" << std::endl; // 读取第二次用户输入,根据新输入决定后续输出 string dayInput; cin >> dayInput; if (dayInput == "1") { cout << "good" << std::endl; } else if (dayInput == "2") { cout << "fnef" << std::endl; } } else if (INPUT == "2") { cout << "2" << std::endl; } return 0; }
修改说明
- 新增
cin >> INPUT读取第一次用户选择,让判断逻辑可以正常触发 - 把平级的第二个
INPUT == "1"判断改为嵌套逻辑,第一次输入1后不会直接输出第二行内容,而是等用户做出第二次选择后再输出对应结果 - 用
else if替换平级if,避免不必要的条件判断,提升执行效率
内容的提问来源于stack exchange,提问作者coldpotato
相关产品推荐
相关产品推荐

