打印Boost Python对象

时间:2014-12-16 19:40:14

标签: python c++ boost-python

我有一个Boost Python对象

py::object obj = whatever();

我想使用普通的python规则打印它。

// I want the effect of print 'My object is ', obj
std::cout << "My object is " << obj << std::endl;

这不会使用巨大的编译器转储进行编译。我该怎么做?

1 个答案:

答案 0 :(得分:7)

Boost.Python没有附带operator<<(ostream&, const object&)但是我们可以编写自己的模仿Python本来会做的事情:调用str

namespace py = boost::python;

std::ostream& operator<<(std::ostream& os, const py::object& o)
{
    return os << py::extract<std::string>(py::str(o))();
}