python sys.stdout和C++ iostreams :: cout

doe*_*toe 4 c++ python stdout stringio

我假设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() 
Run Code Online (Sandbox Code Playgroud)

立即将"cout"写入控制台,然后分隔符"---...",最后,作为stringout.getvalue()的返回值,字符串"stdout".我的目的是在stringout中捕获从C++写入cout的字符串.有谁知道发生了什么,如果有的话,我怎么能捕获python字符串中写入cout的内容?

提前致谢.

cdh*_*wie 6

sys.stdout是一个写入标准输出的Python对象.它实际上不是标准的输出文件句柄; 它包装了该文件句柄.改变sys.stdout指向Python-land 的对象不会以任何方式影响C++中的stdout句柄或std::cout流对象.