#include <iostream>
using namespace std;
int main()
{
int t;
int n;
cin>>t;
while(t--) {
cin>>n;
cout<<n<<endl;
}
}
输入测试文件:
2
1
2
现在,当我复制此输入并将其粘贴到终端时,它会输出如下输出:
2
1
21
2
Process returned 0 (0x0) execution time : 3.485 s
Press ENTER to continue.
但我希望输出采用以下格式,就像IDE中的代码块一样。
2
1
1
2
2
将输入复制到终端时,是否可以以这种格式显示输出?
答案 0 :(得分:1)
您的代码会为您生成所需的正确输入。您的问题很可能是将粘贴输入到终端中,因此所有内容都会立即显示。如果您使用键盘手动输入输入,逐个,则应生成所需的视图。
虽然我不知道为什么你会这样做,因为你的终端“输出”的某些行不是输出而是由于竞争条件而输入。
2 // Input (stdin)
1 // Input (stdin)
1 // Output (stdout)
2 // Input (stdin)
2 // Output (stdout)
修改:回复对此回答的评论
我希望在粘贴输入后按下输入后stdout有2 1 1 2 2。
要实现这一点,您需要了解stdin
和stdout
之间的区别,同时在运行应用程序时打印到终端,它们是单独的流。 stdin
通常从键盘读取,这与通常打印到终端输出窗口的stdout
不同。
以下简单程序将输入和输出分成两个独立的for
循环,以便您可以看到差异。
#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
在此“输出”中,前3个数字来自stdin
,而后5个来自stdout
,并产生您需要的正确输出。
$ ./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)
答案 1 :(得分:0)
您的输入反馈与程序输出之间存在竞争条件。
在复制和粘贴输入时,无法以便携方式阻止终端显示您输入的内容。
如果您延迟程序的输出,直到您确定没有输入,您总能得到可靠的结果。但除非你自己人性化,耐心地等待上一行的输出然后再输入你的下一行,否则你无法反过来。但是,对于大多数终端的复制粘贴工具,你无法实现这一目标。