在运行程序时,如何捕获文件的输入和输出? 我在C++中工作,我需要一些方法来捕获控制台的输入和输出,就像我正直接通过终端工作一样。p>

在运行程序时,如何捕获文件的输入和输出? 我在C++中工作,我需要一些方法来捕获控制台的输入和输出,就像我正直接通过终端工作一样。p>,c++,linux,input,terminal,C++,Linux,Input,Terminal,假设我有一个可执行的test.exe和一个输入文件input.txt,我想将输入和输出的组合保存到console.out,我需要执行什么终端命令 我对linux命令不是很在行,尽管我尽了最大努力去谷歌,所以如果你知道你的帮助,我将不胜感激 例如,如果输入文件中包含: show ignore hide 并且,在使用此输入运行我的progam后,输出文件中包含: Enter Command: /****SHOWING DATA!****/ Enter Command: /****IGNORING

假设我有一个可执行的test.exe和一个输入文件input.txt,我想将输入和输出的组合保存到console.out,我需要执行什么终端命令

我对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!***/

因此,它捕获了如果在没有任何重定向的情况下运行终端,我将在终端中看到的内容

您可以尝试重定向
>console.out
以捕获输出。该命令将捕获整个会话。

脚本命令可能满足您的需要。它将记录输入和输出,并将其保存到文件中。唯一的问题是它有记录命令行或输入编辑的习惯,因此您可能需要稍微清理一下输出。这就解释了一点

只需在命令行中键入
script
即可启动该实用程序。然后你就可以运行你的程序了。键入Control+D(^D)以通知
脚本
实用程序停止录制。输出将位于您在中启动的目录中名为
typescript.out
的文件中

问题更改后更新


基于这个新问题,我不认为你能轻易地完成你的要求。只有程序知道它从
stdin
消耗了多少输入。在出现下一个提示之前,没有好方法知道程序读取标准输入,直到遇到换行符。

让程序除了输出到屏幕外,还输出到文件。因为您正在解析用户输入的命令,所以还应该让它们可以从变量中访问,只需输出这些命令即可

//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.
//伪代码!
标准:流式流量计;
fout.open(“output.txt”);
std::cout cmd;

fout不会打印我们重定向到内部的任何输入。我想把它包括在打字稿中。我们怎么做?你到底是什么意思?我们看着猫人,我们仍然不知道如何利用它来做我们想做的事?有什么方法可以详细说明吗?这并不能完全满足我的要求我希望我可以,但我的代码有数千行的输出,我认为这是不明智的