代码部分:
int t;
cout<<"Enter a no.";
cin>>t;
while(t--){
cout<<"Enter a string :"<<endl;
string str;
cin.ignore();
getline(cin,str);
cout<<"You entered :"<<str<<endl<<endl;
}
Enter a no. 3
Enter a string :
It is working
You entered :It is working
Enter a string :
It is working
You entered :t is working
Enter a string :
It is working
You entered :t is working
为什么从第2次迭代开始跳过第一个字符。任何帮助都将受到欢迎。
答案 0 :(得分:0)
cin>>t;
从用户读取一个号码。由于用户必须在数字后按Enter键,因此您需要cin.ignore()
来忽略换行符。但是,在循环中,您使用getline
,它将读取整行。自从您读完整行内容后,就没有什么可以忽略的。因此,您需要将cin.ignore()
移到 循环之前。
我个人希望始终从用户那里读取行,因为这是我希望用户输入的内容。