※ ChatGPTを利用し、要約された質問です(原文:coutへの出力内容をプログラム中で取得)
質問:C言語、C++(WinXP)でcoutへの出力内容をプログラム中で取得する方法はありますか?
このQ&Aのポイント
C言語やC++(WinXP)で、プログラム中でcoutへの出力内容を取得する方法があるかどうかについて質問します。具体的には、別のプログラムからA.exeを呼び出し、A.exeがcoutに出力した内容を取得して計算に使用することができるのか知りたいです。
A.exeの出力先がcoutではなくcerrの場合、同様の方法で出力内容を取得することはできるのかについても質問しています。
これらの質問に対する解決策や方法をご存知の方がいらっしゃいましたら、教えていただけると助かります。
C言語、C++(WinXP)で以下のようなことはできるのでしょうか。
例えば、
//A.cpp
void main()
{
cout << 1 << endl;
}
というプログラムをA.exeという名前で作ったとします。そして、別のB.exeというプログラムを
//B.cpp
void main()
{
system( "A.exe" );
}
として実行すると(A.exeとB.exeは同じフォルダにあるとして)、コマンドプロンプトに"1"と出力されますが、B.exe中でA.exeがcoutに出力した内容を取得してなんらかの計算をする、例えば、
//B.cpp
void main()
{
system( "A.exe" );
int x; //xにcoutの内容"1"を取得する
x *= 2;
}
のようなことはできるのでしょうか。また、A.exeの出力先がcoutではなくcerrの場合はどうでしょうか。
coutの場合はリダイレクトを使えば同様のことができるような気もするのですが、実際にやりたいのは、コマンドプロンプトで使う事を前提にして作ったプログラム(A.exeのような)があり、それをVC++6.0で作るダイアログベースのGUIプログラムから呼び出します。ただ、A.exeはエラーがあった場合等にcoutやcerrにメッセージを出力するので、GUIプログラム側でそれを取得してエディットボックスやメッセージボックスに出力したいのです。
このような事ができるのかどうかもわからないのですが、もし方法をご存知でしたらご教授をお願いします。
お礼
ご回答、ありがとうございます。参考URLを見てみましたが私には難しく、すぐには理解できそうにないのですが、少しずつ勉強してみたいと思います。