【问题标题】:Making a program stop till enter is pressed使程序停止直到按下回车键
【发布时间】:2014-03-28 10:15:10
【问题描述】:

我有一个程序,当输入命令 (cin) 帮助时,它会显示帮助说明。该注释看起来有点像这样:

C++

if (cmd == "help")
{

    cout << "▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄\n";
    cout << "██             Help Menu                ██\n";
    cout << "▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀\n";
    cout << "Press a key then enter to continue\n" << string( 10, '\n' );
    cin.ignore();
    return 0;
}

字符串 var cmd 是 'help'。

我在 Mac 上编译它并包含:

C++

#include <iostream>
#include <string>
using namespace std;

我可以使用什么代码来完成这项工作? cin.ignore(); 不接缝做任何事情,而下界做 cin.get();

【问题讨论】:

  • 你问的是如何获取用户输入?
  • 这可能会有所帮助:stackoverflow.com/questions/7862582/…
  • 不,是的,我需要程序停止,直到在键盘上按下回车
  • 你的意思是停止还是等待? Stop 建议一些后台任务,例如视频,wait 建议等待按键。
  • 在这 10 个换行符上,请注意每个人都有不同大小的终端。对于这种类型的屏幕布局,我推荐使用 curses 库。

标签: c++ iostream cout cin


【解决方案1】:

我想你可能想要这样的东西:

string input;
getline(cin, input);

【讨论】:

    【解决方案2】:
    while (x!='\n')
    {
        cin.get(x);
    };
    

    编辑: 好的,我已经做了一些挖掘工作。以上是我对同一问题的解决方案。看起来您遇到问题的原因是您需要先清除输入流,然后才能使用 cin.get() 或 cin.ignore() 等待 ENTER,所以:

    cin.ignore(INT_MAX,'\n');
    cin.ignore();
    

    最重要的是,您必须执行两次才能使其正常工作。

    【讨论】:

    • 这和cin.ignore(numeric_limits&lt;streamsize&gt;::max(), '\n')做同样的事情。
    猜你喜欢
    • 1970-01-01
    • 2023-04-05
    • 2023-04-02
    • 2012-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-05
    • 1970-01-01
    相关资源
    最近更新 更多