gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:19:53 26 4
gpt4 key购买 nike

我假设 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”。我的目的是在 stringout 中捕获从 C++ 写入 cout 的字符串。有谁知道发生了什么,如果是这样,我如何捕获在 python 字符串中写入 cout 的内容?

提前致谢。

最佳答案

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

关于c++ - python sys.stdout 和 C++ iostreams::cout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14382772/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com