首页 > 后端开发 > C++ > 正文

为什么 getline() 在 C 中提前终止输入?

Barbara Streisand
发布: 2024-11-10 17:27:02
原创
943 人浏览过

Why Does getline() Terminate Input Prematurely in C  ?

对 C 语言中的 getline() 函数进行故障排除

在利用 getline() 方法检索用户输入的消息时,一些开发人员遇到了问题该方法提前终止输入。

问题: 使用以下代码提示“键入您的消息:”后,程序无法等待用户输入:

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

潜在问题:

当 cin >>在 getline() 之前使用,换行符会留在输入缓冲区中。当 getline() 尝试读取输入时,该换行符保留在缓冲区中,导致立即终止。

解决方案:

要解决此问题,必须删除使用 getline() 之前从输入缓冲区中获取换行符。这可以使用 cin.ignore() 函数来完成。修改后的代码:

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

通过刷新换行符,getline() 可以正确读取输入,直到用户输入换行符,从而可以检索预期的消息。

以上是为什么 getline() 在 C 中提前终止输入?的详细内容。更多信息请关注PHP中文网其他相关文章!

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