为什么C++中的"Press Enter to Continue"代码不起作用?

Why is this "Press Enter to Continue" code in C++ not working?

本文关键字:代码 Continue 不起作用 to Enter C++ 中的 Press 为什么      更新时间:2023-10-16

所以,我用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继续")。