Getline()不保持应用程序打开

Getline() Not keeping Application Open?

本文关键字:应用程序 Getline      更新时间:2023-10-16

我是一名第一学期的c++学生,在课堂上我们正在构建一个BMI计算器(Win32控制台应用程序)。我已经使一切工作都很好,除了一个指令,这是等待用户按enter键关闭应用程序。

我已经成功使用系统("PAUSE");语句,但在过去,我会声明一个字符串变量,例如,初始化字符串genVar;,然后使用getline(cin, genVar);,当用户按下Enter键时,应用程序将关闭,但这次不起作用。应用程序将直接关闭。它可以很好地使用pause,但不能使用getline()。

为这个目的使用getline()是不好的做法吗?有人知道为什么没成功吗?

提前感谢!

我知道这是一个旧的帖子,但看看我在这个问题上发布的解决方案:

c++多重程序问题(rand, conversion, crash)

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

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

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

您需要包含<limits>才能正常工作。

您也可以使用getch()函数来代替std::getline() IMHO