Home > Backend Development > C++ > Why Does `getline()` Skip Input After Using `cin`?

Why Does `getline()` Skip Input After Using `cin`?

Barbara Streisand
Release: 2024-12-08 19:21:10
Original
856 people have browsed it

Why Does `getline()` Skip Input After Using `cin`?

Addressing Input Skip in getline()

When using the getline() function within a program, it's important to be aware of a common issue: getting immediate subsequent input after entering a number. This behavior can occur because of the newline character left in the input stream after entering the number.

Let's examine a specific example:

int number;
string str;
int accountNumber;

cout << "Enter number: ";
cin >> number;
cout << "Enter name: ";
getline(cin, str);
cout << "Enter account number: ";
cin >> accountNumber;
Copy after login

When executed, this code behaves unexpectedly. After inputting the number, it immediately outputs "Enter Account Number" without allowing the user to enter a name using getline(cin, str).

The reason for this behavior lies in the way getline() reads input. It reads the entire line, including the newline character. When you enter the number and press enter, the newline is left in the input stream. When getline() is called, it reads this newline and returns, without waiting for any other input. This causes the program to skip over the "Enter name:" prompt.

To resolve this issue, you can use the std::ws manipulator to skip any leading whitespace, including the newline character, before calling getline(). Here's the updated code:

cout << "Enter number: ";
cin >> number;
cout << "Enter name: ";
cin >> std::ws;
getline(cin, str);
cout << "Enter account number: ";
cin >> accountNumber;
Copy after login

With this change, the program will correctly pause at the "Enter name:" prompt and allow the user to input a name before continuing.

The above is the detailed content of Why Does `getline()` Skip Input After Using `cin`?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template