如何在C ++中通过pybind11捕获Python的sys.stdout和sys.stderr?

时间:2019-10-09 09:13:41

标签: c++ pybind11

我正在与pybind11一起在c ++应用程序中创建Python编辑器。用户界面已经设置,唯一缺少的是Python解释器。

可以轻松调用给定脚本
#include <pybind11/pybind11.h>
namespace py = pybind11;
void executePython(std::string myScript)
{
    py::scoped_interpreter guard{};
    py::exec(myScript);
}

现在,我想将Python中的sys.stdout和sys.stderr保存为字符串(在C ++中),以备后用。基本上我希望能够做到

#include <pybind11/pybind11.h>
namespace py = pybind11;
std::string executePython(std::string myScript)
{
    py::scoped_interpreter guard{};
    py::exec(myScript);

    //...
    //catch pythons output and/or error
    //...

    return pythonOutputString;
}

在pybind11的Wiki中,我找到了'Capturing standard output from ostream'部分,但是我很难理解它。我也找不到任何有用的例子(至少对我来说)与谷歌搜索。如果您知道该怎么做,请张贴一个简短的示例。

0 个答案:

没有答案