It might not be a bug, but I don’t know what is going wrong.
My first entry is repeated for str1 on 2nd iteration, and is same way from then. Only first iteration goes good.
#include <iostream>
#include <string>
using namespace std;
int main () {
cout << " \n Enter two words. \n " ;
char c = 'y';
string str;
string str1;
while (c == 'y'){
getline(cin,str);
getline (cin,str1);
cout << " \n\n str : " << str << " str1 : " << str1 ;
cout << " \n Continue ? \n " ;
cin >> c;
}
return 0;
}
The output is :
Enter two words. hello world this is mr str : hello world str1 : this is mr Continue ? y hello world str : str1 : hello world Continue ? n
Add
after your
Consider the following input:
If we examine the characters that are present in the input stream individually, we’ll see:
The first call to
getlineconsumesdog\n; the second consumescat\n, leaving this:The first call to
cin >> cconsumes onlyybut not the subsequent newline, leaving this:Now, the fun begins: What happens during the next call to
getline? Why it reads up to the next newline, of course. So the next call togetlinereturns an empty line, and leavesowl...in the input stream.The solution, as I outlined above, is to consume the remainder of the (now useless) input line.