【问题标题】:Running on ubuntu terminal giving unexpected line breaks在 ubuntu 终端上运行会出现意外的换行符
【发布时间】:2021-01-08 10:33:27
【问题描述】:

当我尝试在 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 终端在直接复制粘贴测试用例时都给出相同的结果。

【问题讨论】:

    标签: c++ g++ ubuntu-18.04 gnome-terminal konsole


    【解决方案1】:

    粘贴

    5
    4
    3
    2
    1
    5
    
    

    而不是

    5
    4
    3
    2
    1
    5
    

    问题正在发生,因为当您使用第二种情况时,会发生以下情况 -

    1. 读取前 5 个字符并使用 '\n' 字符,cin 知道读取已完成。因此 5 被分配给t
    2. 在循环中,所有整数都被读取到 1,而 5 未被读取,因为它后面没有 '\n' 字符。因此,您在终端上有 4 个输出 -
     4Hello
    3Hello
    2Hello
    1Hello
    

    在按下enter key 后,'\n' 字符被送入输入,然后读取 5 并打印5Hello

    如果我们使用第一种情况,那么输出就如你所愿,因为每个整数后面都跟着'\n' 字符。

    【讨论】:

    • 这不起作用。其实同样的问题来了。我所做的是手动给 t 然后粘贴其余的东西,但最后一个输出也有额外的换行符。
    猜你喜欢
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    • 2019-10-07
    • 1970-01-01
    • 2016-03-14
    • 2021-12-04
    • 2019-06-11
    • 2016-06-18
    相关资源
    最近更新 更多