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;
}