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

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

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-16 21:06:11300浏览

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn