我正在与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'部分,但是我很难理解它。我也找不到任何有用的例子(至少对我来说)与谷歌搜索。如果您知道该怎么做,请张贴一个简短的示例。