首页 >后端开发 >C++ >为什么 getline() 在 C 中提前终止输入?

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

Barbara Streisand
Barbara Streisand原创
2024-11-10 17:27:021014浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn