在Python3中用C ++将std :: string转换为PyObject

问题描述

我正在尝试转换std::string to PyObject

std::string st = jsp.updateRoot(people,people);
PyObject* pValue = PyBytes_Asstring(st);

使用上述方法无效。

我如何转换?

解决方法

来自文档:

char* PyBytes_AsString(PyObject *o)

返回指向o内容的指针。指针指向o的内部缓冲区,该缓冲区由len(o)+ 1个字节组成。缓冲区中的最后一个字节始终为空,而不管是否还有其他空字节。除非以PyBytes_FromStringAndSize(NULL,size)创建对象,否则不得以任何方式修改数据。不能释放它。如果o根本不是字节对象,则PyBytes_AsString()返回NULL并引发TypeError。

这是OP的错误方向。

相反转换的功能是

PyObject* PyBytes_FromString(const char *v)

返回值:新参考。

返回一个新的字节对象,成功时返回字符串v的值,失败时返回NULL。参数v不能为NULL;它不会被检查。