如果我不确定在getline之前是否会得到cin,我该如何摆脱领先的''和'\ n'符号?“cin”和“getline”问题的真正解决方案
例子:
int a;
char s[1001];
if(rand() == 1){
cin >> a;
}
cin.getline(s);
如果我,则对getline前加上一个cin.ignore(),我可能会失去字符串的第一个符号,所以我把它的每一个使用“CIN后唯一的选择>>'?因为当你在一个大项目中工作时,这不是很有效的方法。
是否有比这更好的办法:
int a;
string s;
if(rand() == 1){
cin >> a;
}
do getline(cin, s); while(s == "");
不知道,没有看到您的具体投入,但可能这有助于HTTP: //stackoverflow.com/questions/23047052/why-does-reading-a-struct-record-fields-from-stdistream-fail-and-how-can-i-fi –
不要混合'>>'和' getline'。只是总是使用'getline'。就目前而言,由于您不检查cin >> a'是否成功,因此您的代码无论如何都会中断。 –