int main()
{
int n;
while (cin >> n) {
string res;
for (int i = 0; i < n; i++) {
string tmp;
getline(cin, tmp);
res = res + tmp;
}
cout << res << endl;
}
system("pause");
return 0;
}
这段代码我们是想要输入n个字符串并将他合并

我们看看结果,输入n表示要输入string的个数,可是它似乎根本不给我输入最后一个string的机会
起初我以为是我的编译器坏了,怎么循环次数不够,后来我调试的过程中发现编译器直接跳过了i=0的循环体
这是为什么呢?
原来在cin的过程中我们输入了一个'\n'导致i=0的循环直接被跳过
这里只要添加一行语句cin.igore();就可以解决问题了
int main()
{
int n;
while (cin >> n) {
string res;
cin.ignore();//就是这里
for (int i = 0; i < n; i++) {
string tmp;
getline(cin, tmp);
res = res + tmp;
}
cout << res << endl;
}
system("pause");
return 0;
}
本文探讨了C++中使用cin与getline混合输入字符串时遇到的问题,即输入的换行符导致循环体跳过,影响字符串读取。通过添加cin.ignore()语句解决了这一问题,确保了正确读取所有输入的字符串。
822

被折叠的 条评论
为什么被折叠?



