提供输入:
Input: 3 1 2 3 4 5 6 7 8 9 10 11 12 Expected Output: 1 2 3 4 5 6 7 8 9 10 11 12但它正在给出输出 -
1 2 3 4 5 6 7为什么不给出最后一行?我的代码中有错误吗?
#include <iostream>
#include<stdlib.h>
#include<string.h>
using namespace std;
int main() {
int t;
cin>>t;
while(t--)
{ string str;
getline(cin,str,'\n');
cout<<str<<endl;
}
return 0;
}
答案 0 :(得分:-1)
这是因为cin>>t
没有阅读行尾。第一次拨打getline
时,你会收到一个空字符串。
我可以想到几种解决这个问题的方法。首先是跳过第一个数字末尾的空格,因为换行符计为空格。不幸的是,这也会在下一行的开头跳过空格。
cin >> t >> std::ws;
另一种方法是使用getline
跳过行尾但忽略你回来的字符串。
cin >> t;
getline(cin, str, '\n');