- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在用 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/
我正在用 C++ 编写以下代码作为测试用例: using namespace boost::algorithm; static PyObject* strtest(PyObject* self, Py
Python/C API 有许多执行类似操作的相关函数,其中一个通常用于一般用途,另一个在某种程度上更有效或更方便地用于特定情况。 例如,PyDict_SetItem 和PyDict_SetItemS
我是 python 的新手,我正在尝试从 python 调用 C 函数并希望接收两个变量。为了简单起见,我展示了我的示例代码: #include #include PyObject* foo(ch
编辑:我在流程开始时遗漏了 Py_Initialize()。 我在使用 Py_BuildValue 和 PYArg_ParseTuple 时遇到一些奇怪的行为。 首先,每当我尝试构建一个整数时,我都会
我在 docs 中看到,我可以用 int 构建元组值(指定“i”)。我需要用 bool 制作元组,例如(真,10)。我怎样才能用 bool 制作这样的元组(需要什么说明符)? 最佳答案 该转换没有预定
PyObject *list_over_proposals = PyList_New(n_proposals); for (size_t j = 0; j < n_proposals; j++) {
如果它有所作为,我对有关 Python 3 的答案很感兴趣。 文档声明(here 和 here)PyBuffer_Release() 应该在 PyArg_Parse*() 之后调用 s*, y*. 没
我正在尝试使用 Py_BuildValue() 在 C 中创建元组列表。 我正在尝试构建的内容如下所示: [ (...), (...), ... ] 我不知道在编译时要创建的元组数量,所以我不能在这里
这会泄漏吗?: static PyObject* foo(PyObject* self, PyObject* args){ PyObject* list = PyList_New(0);
我目前正在使用 C/Python API 从大型二进制文件中读取数据。Python 中的这个结果不如纯 C 结果(时间 x2)那么高效,因为我认为,将事物包装成 PyObject 所花费的时间。通常,
我有一个巨大的内存泄漏问题,涉及我正在开发的 C 扩展。在 C 语言中,我有一个名为 A 的 double 组和一个名为 AnotherIntVariable 的 int 变量,我想将它们传递给 Py
我是一名优秀的程序员,十分优秀!