我认为sys.stdout应该引用与在相同进程中运行的iostreams::cout相同的物理流,但事实并非如此。下面的代码调用了一个名为"write"的Python包装器,它写入了cout:
立即将“cout”写入控制台,然后是分隔符“---...”,最后作为stringout.getvalue()的返回值,字符串“stdout”。 我的意图是在stringout中捕获从C++中写入到cout的字符串。 有人知道发生了什么事情,如果知道,我该如何在Python字符串中捕获写入到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”。 我的意图是在stringout中捕获从C++中写入到cout的字符串。 有人知道发生了什么事情,如果知道,我该如何在Python字符串中捕获写入到cout的内容?
提前感谢。