c++ - 在 ubuntu 终端上运行会出现意外的换行符
问题描述
当我尝试在 ubuntu 上使用多个测试用例运行我的 cpp 代码时,我得到了意想不到的结果。当我一个接一个地运行测试用例时它工作正常但是当我复制和粘贴测试用例时,终端会给出意外的换行符
例如
#include<bits/stdc++.h>
using namespace std;
int main(){
int t;
cin>>t;
while(t--){
int n;
cin>>n;
cout<<n<<"Hello"<<endl;
}
}
当我使用测试用例 5 4 3 2 1 5 运行此代码时
通过直接复制和粘贴,我得到以下结果
5
4
3
2
1
5 4Hello
3Hello
2Hello
1Hello
5Hello
代替
5
4
3
2
1
5
4Hello
3Hello
2Hello
1Hello
5Hello
谁能告诉我已经尝试了很多小时研究的问题是什么,但我没有得到任何解决方案。我已经尝试过 konsole、xterm、gnome 终端都在直接复制粘贴测试用例时给出相同的结果。
解决方案
只需粘贴
5
4
3
2
1
5
代替
5
4
3
2
1
5
问题正在发生,因为当您使用第二种情况时,会发生以下情况 -
- 读取前 5 个字符并使用
'\n'
字符,cin
知道读取已完成。因此 5 被分配给t
。 - 在循环中,所有整数都被读取到 1,并且不读取 5,因为它后面没有
'\n'
字符。因此,您在终端上有 4 个输出 -
4Hello
3Hello
2Hello
1Hello
按下 后enter key
,'\n'
字符被输入到输入,然后 5 被读取并5Hello
打印。
如果我们使用第一种情况,那么输出就如你所愿,因为每个整数后面都有'\n'
字符。