sys.stdout は、同じプロセスで実行されている iostreams::cout と同じ物理ストリームを参照していると想定していましたが、そうではないようです。次のコードは、「write」という名前の Python ラッパーを使用して C++ 関数を呼び出し、cout に書き込みます。
from cStringIO import StringIO
import sys
orig_stdout = sys.stdout
sys.stdout = stringout = StringIO()
write("cout") # wrapped C++ function that writes to cout
print "-" * 40
print "stdout"
sys.stdout = orig_stdout
print stringout.getvalue()
すぐにコンソールに "cout" を書き込み、次にセパレータ "---..." を書き込み、最後に stringout.getvalue() の戻り値として文字列 "stdout" を書き込みます。私の意図は、C++ から cout に書き込まれた文字列も stringout でキャプチャすることでした。何が起こっているのか知っている人はいますか?
前もって感謝します。