如何在运行程序时捕获文件的输入和输出
How can i capture the input and output to a file when running a program?
我正在使用 c++,我需要某种方法来捕获控制台的输入和输出,就好像我直接通过终端工作一样。
因此,假设我有一个可执行测试.exe和一个输入文件输入.txt并且我想将输入和输出的组合保存到控制台。
我不擅长 linux 命令,即使我尽力谷歌,所以如果你知道你的帮助将不胜感激!
例如,如果输入文件中包含:
show
ignore
hide
并且,使用此输入运行我的 progam 后,输出文件中包含:
Enter Command:
/****SHOWING DATA!****/
Enter Command:
/****IGNORING DATA!***/
Enter Command:
/***HIDING DATA!***/
我想要一个看起来像这样的文件:
Enter Command: show
/****SHOWING DATA!****/
Enter Command:ignore
/****IGNORING DATA!***/
Enter Command:hide
/***HIDING DATA!***/
因此,这捕获了如果我在没有任何重定向的情况下运行它会在终端中看到的内容。
script
命令可能满足您的需求。 它将记录输入和输出,并将其保存到文件中。 唯一的问题是它也有记录命令行或输入编辑的习惯,因此您可能需要稍微清理一下输出。 这是一个链接,可以稍微解释一下。
您只需在命令行中键入script
即可启动该实用程序。 然后,您将运行程序。 键入 Control+D (^D) 以告知script
实用程序停止录制。 输出将位于您启动的目录中名为 typescript.out
的文件中。
问题更改后更新
基于新问题,我认为你不容易完成你所问的。 只有程序知道它消耗了多少stdin
输入。 没有好方法可以知道程序在遇到换行符之前会读取标准输入,然后再显示下一个提示。
您可以尝试重定向> console.out
来捕获输出。脚本命令将捕获整个会话。
让您的程序除了输出到屏幕外,还输出到文件。由于您正在解析用户输入的命令,因此您还应该从变量访问它们,只需输出这些命令即可。
//PSEUDO-CODE!
std::ofstream fout;
fout.open("output.txt");
std::cout << "Enter Command: ";
fout << "Enter Command: ";
std::cin >> cmd;
fout << cmd << 'n';
//..Output results to file.
相关文章:
- C++文本文件输入
- C++ 中文件输入输出中的长长 v/s int
- 如何修复函数中的 fstream 文件输入以将正确的信息存储在结构数组中?
- 用空格填充 2D 数组(从文件输入)
- 流对象来表示文件输入,然后是标准输入?
- 用精神解析文件输入
- 从文件输入和输出
- 来自文本文件输入 c++ 的向量
- 如何通过键盘或分数文件输入分数
- 了解文件输入和输出,我可以写入文件,但无法从文件打印
- 词频程序 - 文件输入太大?
- 尝试从 csv 文件输入大量数据时出错
- 如何将文件从文件输入到C 中的矩阵中
- 如何从Windows CMD运行可执行文件并将其传递给文件输入的参数参数和重定向
- 如何解析文本文件并使用构造函数中的文件输入来创建对象的容器
- 这是读取文件输入的正确方法吗?
- 如何在 c++ 中使用二进制文件输入/输出读取/写入结构的字符串类型成员
- 如何创建一个具有空值、递减编号系统和.txt文件输入值的二维阵列网格
- C 文件输入流循环问题
- 使用对输入整数的文件输入