関数fprintf
は に書き込みますFILE*
。stringstream に書き込む debugPrint 関数があります。関数は多くの場所で使用されており、コードが壊れる可能性があるため、関数を変更したくありません。
文字列ストリームを fprintf に渡すにはどうすればよいですか?
更新: をラップしstringstream
てFILE
アンラップできますか?
関数fprintf
は に書き込みますFILE*
。stringstream に書き込む debugPrint 関数があります。関数は多くの場所で使用されており、コードが壊れる可能性があるため、関数を変更したくありません。
文字列ストリームを fprintf に渡すにはどうすればよいですか?
更新: をラップしstringstream
てFILE
アンラップできますか?
ostream を fprintf に「渡す」ことはできません。FILE
構造はプラットフォームに依存します。
これはおそらく最善の方法ではありませんが、悪質なマクロを作成することはできます:
#undef fprintf
#define fprintf my_fprintf
また、2 つの my_fprintfs を作成できます。1 つは を受け取りFILE*
、もう 1 つは引数として受け取りstd::stringstream&
ます。
my_fprintf を直接呼び出すだけでマクロを回避できますが、呼び出しサイトを変更する必要があります。
ポータブルに「stringstream を FILE* にラップ」することはできませんが、システム固有の方法がいくつかあります。それがあなたの求めるものなら、例えば Linux には fopencookie() があり、これは読み書き関数への関数ポインタを取ります。その後、std::stringstream をラップする関数を作成できます。