C++ 使用终端无法获得精确的输出形式

C++ 使用终端无法获得精确的输出形式,c++,terminal,output,C++,Terminal,Output,现在,当我复制这个输入并将其粘贴到终端时,它会给出如下输出: 2 1 2 但我希望输出的格式如下,就像IDE中的代码块一样 2 1 21 2 Process returned 0 (0x0) execution time : 3.485 s Press ENTER to continue. 将输入复制到终端时,是否可以以这种格式显示输出?您的输入反馈和程序输出之间存在竞争条件 在复制和粘贴输入时,无法以便携方式阻止终端显示您键入的所有内容 如果您将程序的输出延迟到确定没有输入时,您总

现在,当我复制这个输入并将其粘贴到终端时,它会给出如下输出:

2
1
2
但我希望输出的格式如下,就像IDE中的代码块一样

2
1
21

2

Process returned 0 (0x0)   execution time : 3.485 s
Press ENTER to continue.

将输入复制到终端时,是否可以以这种格式显示输出?

您的输入反馈和程序输出之间存在竞争条件

在复制和粘贴输入时,无法以便携方式阻止终端显示您键入的所有内容


如果您将程序的输出延迟到确定没有输入时,您总能得到可靠的结果。但是,除非你自己在键入下一行之前耐心地等待前一行的输出,否则你不能用另一种方式来处理。但大多数终端的复制粘贴功能都无法实现这一点。

您的代码为我生成了您想要的正确输入。您的问题很可能是您将输入粘贴到终端中,因此它会立即显示出来。相反,如果您用键盘手动输入,一个接一个,它应该会生成您想要的视图

虽然我不知道为什么你会想这样做,因为你的终端“输出”的一些行不是输出,而是由于竞争条件的输入

2
1
1
2
2

编辑:回应对此答案的评论

在粘贴输入并按enter键后,我希望标准输出具有2 1 2

要做到这一点,您需要了解
stdin
stdout
之间的区别,而当您运行应用程序时,两者都打印到终端,它们是独立的流
stdin
通常从键盘读取,这与通常打印到终端输出窗口的
stdout
不同

下面的简单程序将输入和输出分成两个独立的
for
循环,以便您可以看到差异

2 // Input (stdin)
1 // Input (stdin)
1 // Output (stdout)
2 // Input (stdin)
2 // Output (stdout)
在该“输出”中,前3个数字来自
stdin
,而后5个数字来自
stdout
,并产生您所需的正确输出

$ ./a.out
2
1
2
2
1
1
2
2

您发布的代码在终端中为我生成正确的输出…对我来说,它不起作用。您可以看到我的输出。1紧跟在2之后,看起来像21,这意味着不可能实现这样的输出。所以,唯一的方法就是一个接一个地写输入。我知道如果我一个接一个地粘贴输出,它会产生正确的输出。但这不是我想要的。在竞争编码过程中,我确实需要一次性粘贴整个输入。@shivammitra这个问题非常不清楚,而且越来越不清楚。您希望
stdout
具有
2 1 2
还是希望输出显示在
stdin
stdout
上,如我在回答中所示?我认为您需要仔细阅读
stdin
stdout
之间的差异,以及它们在终端中的表示方式。即使粘贴了输入,终端上的输入/输出也应该看起来像2 1 2,其中一些是输入,一些是输出。在windows中复制和粘贴代码块确实提供了我想要的输出。
#include <iostream>
#include <vector>

using namespace std;

int main()
{
    int t, n, i;
    vector<int> numbers;

    cin >> t;

    // Input
    for (i = 0; i < t; ++i) {
        cin >> n;
        numbers.push_back(n);
    }

    // Output
    cout << t << endl;
    for (vector<int>::iterator it = numbers.begin(); it != numbers.end(); ++it) {
        cout << *it << "\n" << *it << endl;
    }
}
$ ./a.out
2
1
2
2
1
1
2
2
$ ./a.out
2 // Input (stdin)
1 // Input (stdin)
2 // Input (stdin)
2 // Output (stdout)
1 // Output (stdout)
1 // Output (stdout)
2 // Output (stdout)
2 // Output (stdout)