【问题标题】:Why is this "Press Enter to Continue" code in C++ not working?为什么 C++ 中的“按 Enter 继续”代码不起作用?
【发布时间】:2016-09-11 01:58:18
【问题描述】:

所以,我正在用 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();

【问题讨论】:

  • 见鬼回车,正确答案是什么?!!!
  • @bipll 查看以下两个答案。他们都是正确的。
  • 我没看到。哪一个? Python、Java、C++ 还是 HTML?现在我睡不着了!我赌 Java!

标签: c++ cout cin enter


【解决方案1】:

您很可能在 ans/input 之后输入了 Enter(只有一个字)。因此,当您按下 Enter 时,它会将 ans 字符串作为输入,并将以下换行符视为分隔符。 因此,不会读取换行符,它会保留在输入缓冲区中,该缓冲区会自动作为下一个输入。也就是说,cin.ignore() 忽略此换行符,控制转到下一条指令。

要修复它,请使用 cin.getline(ans)/getline(cin, ans) 代替 cin 或使用另一个 cin.ignore() 忽略您的下一个 Enter(“按 Enter 继续”)。

【讨论】:

    【解决方案2】:

    在为ans 提供一些数据后,您可能已经输入了“enter”。在这种情况下,cin.ignore() 将读取“输入”并立即返回。因此,您需要另一个 cin.ignore() 等待另一个“输入”。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-27
    • 1970-01-01
    • 2010-10-28
    • 1970-01-01
    • 2018-03-07
    • 1970-01-01
    • 2018-11-05
    相关资源
    最近更新 更多