Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

c++

stream

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?

like image 338
Steve Avatar asked Aug 02 '26 03:08

Steve


1 Answers

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.

like image 184
William Avatar answered Aug 04 '26 20:08

William



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!