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

时间:2013-05-16 04:16:42

标签: c++ getline

我是第一学期的C ++学生,在课堂上我们正在构建一个BMI计算器(Win32控制台应用程序)。我已经把一切都搞好了,除了其中一条说明,等待用户按Enter键关闭应用程序。

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

为此目的使用getline()是不好的做法?任何人都有任何线索,为什么它不起作用?

提前谢谢!

3 个答案:

答案 0 :(得分:0)

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>才能正常使用。

答案 1 :(得分:0)

你也可以在std :: getline()的地方使用getch()函数恕我直言

答案 2 :(得分:0)

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

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

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