【问题标题】:Getline() Not keeping Application Open?Getline() 不保持应用程序打开?
【发布时间】:2013-05-10 20:13:59
【问题描述】:

我是第一学期的 C++ 学生,在课堂上我们正在构建一个 BMI 计算器(Win32 控制台应用程序)。我已经让一切正常工作,除了其中一条指令,即等待用户按 Enter 键关闭应用程序。

我成功使用了系统("PAUSE");声明,但在过去我会声明一个字符串变量,例如,初始化 string genVar; 然后使用 getline(cin, genVar); 当用户按下 Enter ,应用程序将关闭,但这次它没有工作。该应用程序将简单地关闭。它在暂停时工作得很好,但在 getline() 时却不行。

为此目的使用 getline() 是不好的做法吗?有人知道为什么它不起作用吗?

提前谢谢你!

【问题讨论】:

标签: c++ getline


【解决方案1】:

我知道这是一篇旧帖子,但请查看我在此问题中发布的解决方案:

C++ Multiple Program Issues (rand, conversion, crashing)

它解释了(正如评论中提到的克里斯)getline 倾向于在缓冲区中留下一个新行字符,需要清除和重置。上面的答案解释了它。

【讨论】:

    【解决方案2】:

    std::cinstd::getline 通常不能很好地混合使用,您通常希望在程序中坚持使用其中一个或另一个以避免输入错误和错误。您的 getline 可能正在从早先的std::cin 中获取剩余输入。我建议使用这个:

      std::cout << "Press ENTER to continue...";
      std::cin.ignore( std::numeric_limits<std::streamsize>::max(), '\n' );
    
      return 0;
      }
    

    您需要包含&lt;limits&gt; 才能正常工作。

    【讨论】:

      【解决方案3】:

      您也可以使用 getch() 函数代替 std::getline() 恕我直言

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多