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