理解 C 中的 getline()
在 C 中使用 getline() 方法检索用户输入时,记住一个常见问题非常重要:当将 cin 与 >> 一起使用后, getline() 可能无法正确捕获用户输入。
问题:
让我们考虑一下以下代码片段:
string messageVar; cout << "Type your message: "; getline(cin, messageVar);
在此代码中,预期 getline() 将读取用户输入并将其存储在 messageVar 中。但是,在某些情况下,getline() 会过早停止,从而使 messageVar 为空。 .
解决方案:
要解决此问题,需要刷新先前 cin >> 操作中在输入缓冲区中留下的换行符。这可以使用 cin.ignore() 来实现:
string messageVar; cout << "Type your message: "; cin.ignore(); getline(cin, messageVar);
问题原因:
当使用 >> 时,它会读取输入。直到遇到空白字符(例如空格或换行符)。但是,它将换行符保留在输入缓冲区中,导致 getline() 停止读取,因为它将换行符解释为输入结束。通过使用 cin.ignore(),换行符将从缓冲区中删除,从而使 getline() 能够正常运行。
以上是为什么在 C 中使用 `cin` 和 `>>` 后 `getline()` 会失败?的详细内容。更多信息请关注PHP中文网其他相关文章!