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