微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 ubuntu 终端上运行时出现意外换行

如何解决在 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

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。