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