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

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

DDD
DDD原创
2024-11-13 09:50:02831浏览

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