首页 > 后端开发 > C++ > 为什么 `getline()` 读取整数后会跳过输入?

为什么 `getline()` 读取整数后会跳过输入?

Mary-Kate Olsen
发布: 2024-12-16 21:06:11
原创
223 人浏览过

Why Does `getline()` Skip Input After Reading an Integer?

getline() 问题:跳过换行符

使用 cin 读取整数后使用 getline(cin, str) 检索用户输入时>>> number,您可能会遇到意外行为,即名称提示会跳过 str 的输入。发生这种情况是因为 getline(cin, str) 读取并丢弃前一个整数输入留下的换行符。

要解决此问题,您可以在 getline(cin, str) 之前使用 std::ws 来跳过空格,包括换行符,在读取字符串之前。这可以确保 getline(cin, str) 正确读取用户输入,而不会跳过名称提示:

int number;
string str;
int accountNumber;

cout << "Enter number:";
cin >> number;
cout << "Enter name:";
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
getline(cin, str);
cout << "Enter account number:";
cin >> accountNumber;
登录后复制

通过使用 cin.ignore,您可以有效地绕过任何剩余的空格或换行符,从而允许 getline(cin, str) ) 以按预期捕获用户的姓名输入。

以上是为什么 `getline()` 读取整数后会跳过输入?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板