在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;它不会被检查。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...