gpt4 book ai didi

python - 在 Py_BuildValue 中返回变量字符串

转载 作者:搜寻专家 更新时间:2023-10-31 02:06:59 25 4
gpt4 key购买 nike

我正在用 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()
' X\x0e'

我期待 'BOOST C++ LIBRARIES' 作为返回值

我错过了什么?

谢谢

最佳答案

[Python 3.Docs]: Parsing arguments and building values - 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());

关于python - 在 Py_BuildValue 中返回变量字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49396094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com