理解 getline() 行为
C 中的 getline() 函数用于从标准输入读取字符,直到出现换行符为止遭遇。然而,开发者在 cin 的提取运算符 (>>) 之后使用 getline() 时可能会遇到意想不到的问题。
问题描述
用户可能会发现他们的代码是尝试使用 getline() 捕获用户提供的消息时,不会暂停接收用户输入。根本原因与cin提取运算符的行为有关。
解决方案:刷新换行符
使用cin的提取运算符读取数据后,留下换行符输入缓冲区中的字符 (n)。当紧接着调用 getline() 时,它会偶然发现这个换行符并立即停止读取。
要解决此问题,必须在调用 getline() 之前从缓冲区中刷新换行符。这可以通过使用 cin.ignore() 来实现,如下所示:
string messageVar; cout << "Type your message: "; cin.ignore(); getline(cin, messageVar);
通过插入 cin.ignore(),换行符将被丢弃,从而允许 getline() 按预期读取用户的输入。该技术确保 cin 运算符和 getline() 连续顺利地运行。
以上是为什么使用'cin”的提取运算符后'getline()”不起作用?的详细内容。更多信息请关注PHP中文网其他相关文章!