c++ - SWIG 将流从 python 传递到 C++

标签 c++ python stream iostream swig

C++
我在 C++ 中有一些记录器类。这个记录器在我的图书馆中被大量使用。记录器允许将标准 STL 流设置为用作输出流。

python
使用“above SWIG wrapped C++ library”的 Python 库大量使用带有 StreamHandler 的 python 标准日志记录。像这样的东西:

logger = logging.getLogger("base_logger")

#create and set console handler
ch = logging.StreamHandler()
ch.stream = sys.stdout
logger.addHandler(ch)

如何使用 SWIG 将 python 流作为 STL 流传递给 C++ 库?

所以可以让 C++ 使用你的 python 流。像这样的东西:

ch = logger.handlers[NEEDED_HANDLER]
Swig_wrapped_lib.set_stream(ch.stream)

最佳答案

从技术上讲,您需要实现一个 swig typemap (in),将 python 流对象转换为 std::ostream。但是,我担心这是非常重要的。

关于c++ - SWIG 将流从 python 传递到 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4892808/

相关文章:

python - Tkinter 回调

.net - 当他的 BaseStream 有 BOM 时,将 StreamReader 返回到开始

python - 如何设置 Spotipy 并访问 Spotify 的 Web API

c++ - 有没有办法检测当前成员函数是在左值还是右值上运行?

c++ - 在C++线程内调用类的方法

c++ - 如何使用 Blackberry 10 Native 方法生成条形图

python - 如何使用 numpy.where 更改图像的所有像素?

java - 无阻塞地原子读取 n 个字节

java.net.BindException 如何清除套接字或导致它的原因?

c++ - boost::asio::yield_context:意外的 forced_unwind 异常