Steve Steve - 15 days ago 5
C++ Question

Using `getline(cin, s);` after using `cin >> n;`

int n;
std::cin >> n;

std::string s = "";
std::getline(cin, s);


I noticed that if I use
cin
, my program would hang the next time I reach the line
getline(cin, rangeInput)
.

Since
getline()
is using
cin
, is that why it is causing the program to hang if I have previously used
cin
? What should I do if I want to get a line after using
cin
?

Answer

You need to clear the input stream - try adding the following after your cin:

cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

The accepted answer to this question gives a good explanation of why/when this is required.