c++ - 在 Python3 中将 std::string 转换为 C++ 中的 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;它不会被检查。
推荐阅读
- mysql - 在 mySQL 中使用 json_array 拆分数组中的 json 元素
- c# - Bind a WPF ComboBox Based on Data From Another ComboBox Using JSON in C#
- python - matplotlib 中日期时间轴的格式
- java - 检查包含整数值的列表时如何处理 HQL 查询中的空值
- sql - 无法在 impala 查询中同时使用 select distinct 和 group by
- ionic-framework - 如何从 Google Drive 下载 csv 文件以在移动应用中显示内容
- c# - 嵌套列表/循环依赖的不完整映射
- reactjs - React TypeScript:自定义钩子无限循环
- sql-server - 按层次顺序排序表
- ansible - 如何重命名一个ansible角色名称?