我有一个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;
这不会使用巨大的编译器转储进行编译。我该怎么做?
答案 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))();
}