首页 > 后端开发 > C++ > 为什么我的 `getline()` 函数不接受 C 语言中的用户输入?

为什么我的 `getline()` 函数不接受 C 语言中的用户输入?

DDD
发布: 2024-11-13 09:50:02
原创
922 人浏览过

Why Is My `getline()` Function Not Accepting User Input in C  ?

C 语言中的 getline() 故障排除

尝试使用 getline() 方法捕获用户输入时,您可能会遇到意外行为,即程序在不接受输入的情况下停止运行.

考虑以下示例:

string messageVar;
cout << "Type your message: ";
getline(cin, messageVar);
登录后复制

尽管如果存在 cout 语句提示用户,程序将在不收集输入的情况下提前终止。

解决方案

问题的出现是由于 >> 的性质造成的。运算符,它在输入缓冲区中留下换行符。此字符与 getline() 冲突,后者要求输入在换行符处终止。

为了缓解此问题,从缓冲区中刷新换行符至关重要。这可以使用 cin.ignore() 方法来实现。

更正后的代码应如下所示:

string messageVar;
cout << "Type your message: ";
cin.ignore();
getline(cin, messageVar);
登录后复制

cin.ignore() 语句从缓冲区中清除换行符,允许 getline() 正确运行。

以上是为什么我的 `getline()` 函数不接受 C 语言中的用户输入?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板