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的内容?
提前致谢.
sys.stdout是一个写入标准输出的Python对象.它实际上不是标准的输出文件句柄; 它包装了该文件句柄.改变sys.stdout指向Python-land 的对象不会以任何方式影响C++中的stdout句柄或std::cout流对象.