我在c ++工作,我需要一些方法来捕获控制台的输入和输出,就像我直接通过终端一样。
所以假设我有一个可执行的test.exe和一个输入文件input.txt,我想将输入和输出的组合保存到console.out我需要做什么终端命令?
我在linux命令方面不是很好,即使我尽力去谷歌,所以如果你知道你的帮助会非常感激!
例如,如果输入文件包含在其中:
show
ignore
hide
并且在使用此输入运行我的程序后,输出文件包含在其中:
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!***/
这样可以捕获我在终端中看到的内容,如果我在没有任何重定向的情况下运行它。
答案 0 :(得分:2)
script
命令可能符合您的需求。它将记录输入和输出,并将其保存到文件中。唯一的问题是它有记录命令行或输入编辑的习惯,所以你可能需要稍微清理一下输出。 Here is a link可以解释一下。
只需在命令行输入script
即可启动该实用程序。然后你会运行你的程序。键入Control + D(^ D)告诉script
实用程序停止录制。输出将位于您启动的目录中名为typescript.out
的文件中。
更改问题后更新
基于这个新问题,我认为你不能轻易完成你的要求。只有程序知道它消耗了stdin
的输入量。在提出下一个提示之前,没有好的方法可以知道程序读取标准输入,直到遇到换行符。
答案 1 :(得分:1)
您可以尝试重定向> console.out
来捕获输出。 script命令将捕获整个会话。
答案 2 :(得分:0)
让您的程序除了输出到屏幕外,还输出到文件中。由于您正在解析用户输入的命令,您还应该从变量中访问它们,只输出它们。
//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.