Getline()不保持应用程序打开
Getline() Not keeping Application Open?
我是一名第一学期的c++学生,在课堂上我们正在构建一个BMI计算器(Win32控制台应用程序)。我已经使一切工作都很好,除了一个指令,这是等待用户按enter键关闭应用程序。
我已经成功使用系统("PAUSE");语句,但在过去,我会声明一个字符串变量,例如,初始化字符串genVar;,然后使用getline(cin, genVar);,当用户按下Enter键时,应用程序将关闭,但这次不起作用。应用程序将直接关闭。它可以很好地使用pause,但不能使用getline()。
为这个目的使用getline()是不好的做法吗?有人知道为什么没成功吗?
提前感谢!
我知道这是一个旧的帖子,但看看我在这个问题上发布的解决方案:
c++多重程序问题(rand, conversion, crash)
它解释了(正如chris在评论中提到的)getline倾向于在缓冲区中留下一个新的行字符,需要清除和重置。
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>
才能正常工作。
您也可以使用getch()函数来代替std::getline() IMHO
相关文章:
- 试图在visual studio上用C++创建一个桌面应用程序
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 在C应用程序中运行C++(带有STL)函数
- 使用VerQueryValue检索应用程序的文件描述
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 使用调试/崩溃报告将应用程序部署到客户端
- C++控制台应用程序阻止退出
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 将应用程序从32位移植到64位时出现问题
- 如何改变c++应用程序的视觉效果
- WM_CTLCOLORSTATIC从未在WIN32应用程序中触发
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- phytec phyBOARD iMX-6在从闪存而不是SD卡运行qt5 opengles应用程序时表现不佳(FPS减半
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 如何从Windows应用程序输出到标准?
- C Getline力量可以关闭带有空间的控制台应用程序
- CIN / Getline在控制台应用程序中的一行中
- Getline()不保持应用程序打开