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
?
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.
std::cin
leaves an extraneous \n
in the input stream. When you use std::getline()
, you are retrieving that \n
.
Although @WilliamLannen's answer works if you really need std::cin
, you are better off using this method:
int n;
std::string sn;
std::stringstream ssn;
std::getline(std::cin, sn);
ssn << sn;
ssn >> n;
References
http://www.daniweb.com/software-development/cpp/tutorials/71858
int n;
std::cin >> n;
std::cin.get() //<--- use cin.get() here ...
std::string s = "";
std::getline(cin, s);