没有使用终端获得确切的输出形式
Not getting exact form of output using terminal
#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
将输入复制到终端时是否可以以这种格式显示输出?
您的代码为我生成了您想要的正确输入。您的问题很可能是您将输入粘贴到终端中,因此所有内容都会立即出现。相反,如果您使用键盘逐个手动输入输入,它应该会产生您想要的视图。
虽然我不知道你为什么要这样做,因为你的终端"输出"的某些行不是输出,而是由于竞争条件而输入的输入。
2 // Input (stdin)
1 // Input (stdin)
1 // Output (stdout)
2 // Input (stdin)
2 // Output (stdout)
编辑:回应对此答案的评论
我希望在粘贴输入并按回车键后,标准输出有 2 1 1 2 2
。
为此,您需要了解stdin
和stdout
之间的区别,同时在运行应用程序时两者都打印到终端,它们是单独的流。 stdin
通常从键盘读取,这与通常打印到终端输出窗口的stdout
不同。
下面的简单程序将输入和输出分成 2 个独立的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)
输入反馈和程序输出之间存在争用条件。
阻止终端在复制和粘贴输入时显示您键入的所有内容是不可能的。
如果您延迟程序的输出,直到您确定没有剩余的输入,您总是可以获得可靠的结果。但是你不能反过来,除非你自己在输入下一行之前耐心地等待上一行输出。 但是,使用大多数终端的复制和粘贴功能,您将无法实现这一目标。
相关文章:
- 如何在不丢失输出的情况下杀死/停止终端中正在运行的进程?
- 输出 c++ 窗口 wstring 日志在终端中正确
- 在集成终端上运行vscode lldb调试器时,如何获取程序的输出?
- CUDA内核printf()在终端中不产生输出,在探查器中工作
- 为什么我的代码在终端中没有输出任何内容.开始新行没有错误
- 如何从 bash 脚本捕获终端输出并将其显示在我的 Qt UI 中?
- 如何在不将其连接到终端的情况下运行'screen',以便我可以在C++ (qt) 应用程序中捕获输出?
- 终端命令输出到 CPP 中的数组
- VisualStudio代码C 终端用于输出
- 在C++中使用QProcess重定向gnome终端的输出
- 可以在没有终端的 Unix 进程上写入标准输出
- Linux终端中C++的奇怪输出
- Vim:警告:输出不到终端
- 输出字符串使用 C++ 覆盖 Linux 终端上的最后一个字符串
- 如何将输出从终端保存到变量
- 如何输出到当前可见的终端
- 如何使cplex不输出到终端
- C++函数系统(命令)的输出在Linux终端中不显示颜色
- 如何在不输出新行的情况下更新终端中的输出字段
- 如何查看在终端上编译的c ++程序的输出