私は他の言語の関数にアクセスできるライブラリを作るためにC言語で書かれたコードを用意しています。C++アプリケーションでのCライブラリの標準出力の使用
私は現在、このコードにC++クライアントを作成しています。私のライブラリをC++アプリケーションに組み込むためのサポートを提供するために必要な変更を把握しています。
通常、Cベースのバイナリはいくつかの入力を解析し、そのデータを一連のfprintf
ステートメントを介してstdout
に出力します。
関連するC関数の出力をstdout
にリダイレクトする方法はありますか?
私はC++エキスパートではありませんが、私はC++出力ストリームバッファ(ostream
とofstream
?)のサブクラスを提供したいと思います。 Cの機能はstdout
です。
可能であれば、このデータをファイルストリームまたはC++アプリケーション内の標準出力にリダイレクトするオプションを希望します。
どうすればよいですか? Cコードをそのままにして、stdout
をC++コードからリダイレクトすることはできますか?ファイルポインタまたは記述子が引数になるように、私は、問題のC関数を編集することができ
EDIT
。これが助けになるのでしょうか。私には分かりませんが、C++ IOとC IOをどのように翻訳するかです。私はC++ iostream
をC関数に渡すことはできませんか?
一部のシステム(Linuxなど)では、Cの 'stdout'とC++の' std :: cout'は "同期"しています。また、C++コードで ''ヘッダを使うと、 'stdout'というCの概念を得ることができます。 –
'FILE * fp = stdout'を設定し、データを' stdout'に吐き出す 'foo(FILE * fp)'関数を持っていれば、 'std :: cout'の出力を(まだ) 'std :: cout'またはファイル出力ストリームのどちらかの出力ストリーム? –
C関数はC++の 'std :: cout'を知らない! http://gcc.gnu.org/onlinedocs/gcc-4.6.2/libstdc++/manual/manual/io_and_c.html –