1

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

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

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

先感谢您!

4

3 回答 3

0

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

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

  return 0;
  }

您需要包括在内<limits>才能正常工作。

于 2013-05-16T04:30:36.057 回答
0

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

于 2013-05-16T06:11:43.750 回答
0

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

C++ 多程序问题(rand、转换、崩溃)

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

于 2016-04-12T17:26:02.513 回答