我正在使用 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!***/
因此,如果我在没有任何重定向的情况下运行它,那将捕获我在终端中看到的内容。
最佳答案
script
命令可能会满足您的需要。它将记录输入和输出,并将其保存到文件中。唯一的问题是它有记录命令行或输入编辑的习惯,所以你可能需要稍微清理一下输出。 Here is a link这稍微解释了一下。
您只需在命令行键入 script
即可启动该实用程序。然后你会运行你的程序。键入 Control+D (^D) 告诉 script
实用程序停止录制。输出将位于您启动目录中名为 typescript.out
的文件中。
问题更改后更新
根据新问题,我认为您无法轻松完成您的要求。只有程序知道它消耗了多少来自 stdin
的输入。在出现下一个提示之前,没有好的方法知道程序读取标准输入直到遇到换行符。
关于c++ - 运行程序时如何捕获输入和输出到文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10140522/