1

私は 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!***/

したがって、リダイレクトなしで実行した場合にターミナルに表示されるものをキャプチャします。

4

3 に答える 3

2

このscriptコマンドは、ニーズを満たす場合があります。発生した入力と出力を記録し、ファイルに保存します。唯一の問題は、コマンド ラインや入力編集を記録する習慣があるため、出力を少しクリーンアップする必要がある場合があることです。 ここに少し説明するリンクがあります。

scriptコマンド ラインで入力するだけでユーティリティを起動できます。次に、プログラムを実行します。Control+D (^D) を入力して、scriptユーティリティに記録を停止するように指示します。出力は、開始したディレクトリにある名前のファイルに保存さtypescript.outれます。

質問の変更後に更新

新しい質問に基づいて、あなたが求めていることを簡単に達成できるとは思いません。それがどれだけの入力をstdin消費したかを知っているのはプログラムだけです。次のプロンプトを表示する前に、改行が検出されるまで、プログラムが標準入力を読み取ったことを知る良い方法はありません。

于 2012-04-13T12:13:17.793 に答える
1

> console.out出力をキャプチャするためにリダイレクトを試みることもできます。スクリプトコマンドは、セッション全体をキャプチャします。

于 2012-04-13T12:12:27.807 に答える
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.
于 2012-04-13T12:37:09.137 に答える