在 Py_BuildValue 中返回变量字符串
returning a variable string in Py_BuildValue
我正在用C++编写以下内容作为测试用例:
using namespace boost::algorithm;
static PyObject* strtest(PyObject* self, PyObject* args)
{
std::string s = "Boost C++ Libraries";
to_upper(s);
PyObject * python_val = Py_BuildValue("s", s);
return python_val;
}
代码编译和导入,但生成看起来像对内存位置的引用的内容。
>>> math_demo.strtest()
' Xx0e'
我期待'BOOST C++ LIBRARIES'
作为返回值
我错过了什么?
谢谢
[Python
3.Docs]:解析参数和构建值 - PyObject* Py_BuildValue(const char *format, ...((或任何其他Python/C API函数(适用于不C++的C类型。
为了解决这个问题,请使用 [cplusplus]: std::string::c_str:
PyObject *python_val = Py_BuildValue("s", s.c_str());
相关文章:
- 如何返回变量而不是变量的数值
- 函数,返回变量c++占用的内存位置的大小
- C++中局部变量和返回变量的构造和析构
- 我们如何在范围消失时通过引用返回变量
- 沿枚举 c++ 返回变量类型
- 在 Py_BuildValue 中返回变量字符串
- 递归返回语句无法正确返回变量
- 返回变量为 void (*)(void)
- 地址运算符是否返回变量引用的对象的地址
- 从函数返回变量地址时如何修复"与局部变量关联的堆栈内存地址"?
- 如何访问Python中编译的多个返回变量
- Binary_search通过其成员函数的返回变量[C ]找到类对象
- C++函数中声明和返回变量,并在主函数中使用它
- 从 C++ 返回对对象的引用时,是否需要在返回变量中使用 "&" 运算符?
- 函数返回看似随机的数字,而不是返回变量的值
- 从函数返回变量的链表
- 通过函数参数中的引用返回变量
- C++动态内存分配.将动态分配的 char* 返回变量数组分配给 char 变量
- 传递或返回变量时并不总是调用复制构造函数
- 尝试在模板 c++ 中返回变量时出错