为什么C++中的"Press Enter to Continue"代码不起作用?
Why is this "Press Enter to Continue" code in C++ not working?
所以,我用C++为孩子们制作了一个简单的测试程序(我真的是编程初学者)。我想做的是要求用户在第一个问题后按Enter键,只有在按Enter键时,第二个问题才可见。但由于某些原因,C++不等待用户在cin语句中输入输出,并自动打印下一个问题。
这是代码:
cout << "Q1. Which of these languages is not used to make Computer Software?" << endl;
cout << "a. Python" << endl;
cout << "b. Java" << endl;
cout << "c. C++" << endl;
cout << "d. HTML" << endl;
cout << "" << endl;
cin >> ans;
cout << "" << endl;
cout << "Press Enter to Continue";
cin.ignore();
在为ans
提供一些数据后,您可能已经输入了"enter"。在这种情况下,cin.ignore()
将读取"回车"并立即返回。因此,您需要另一个cin.ignore()
来等待另一个"输入"。
很可能您在ans/input之后输入了Enter(用一个词)。因此,当您按下Enter时,它会将和字符串作为输入,并将下面的换行符视为delimeter。因此,换行符不会被读取,而是保留在输入缓冲区中,该缓冲区会自动作为下一个输入。也就是说,cin.ignore()忽略这条换行符,控制权转到下一条指令。
若要修复此问题,请使用cin.getline(ans)/getline(cin,ans)而不是cin,或者使用另一个cin.ignore()来忽略下一个Enter("按Enter继续")。
相关文章:
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 代码在main()中运行,但在函数中出现错误
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 编译包含字符串的代码时遇到问题
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 在Linux for Windows上编译C++代码时出错
- 我的字符计数代码计算错误.为什么
- 孤立代码块在结构中引发异常
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 此代码是否违反一个定义规则
- 为什么我的代码在输出中增加了93天
- 我的简单if-else语句是如何无法访问的代码
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- 为什么在这个代码结束循环中没有得到结束
- 为什么C++中的"Press Enter to Continue"代码不起作用?
- 这些continue语句如何影响我的代码