将CString转换为Python字符串对象

0 投票
1 回答
1718 浏览
提问于 2025-04-17 08:19

我有一个用来连接C语言和Python的函数包装器。这个包装器会接收两个字符串参数,然后把这两个字符串转换成一个元组,接着把这个元组传给Python脚本。fileName和className是C语言的字符串参数,而pFunc是Python的函数名。

PyObject *pArgs, *pValue,*pFunc;
pValue = PyString_FromString(fileName);
PyTuple_SetItem(pArgs, 0, pValue);
pValue = PyString_FromString(className);
PyTuple_SetItem(pArgs, 0, pValue);
pValue = PyObject_CallObject(pFunc, pArgs);

出现的错误是:无法将QString转换为const char*

我尝试过使用PyUnicode_FromString这个API,但还是不行,错误依旧。

输入是字符串,我只是想让PyObject_CallObject这个函数正常工作,不管pValue是什么类型(最好也是字符串)……我该怎么做呢……

1 个回答

2

错误是无法将QString转换为const char*

所以你的字符串 fileNameclassNameQString 对象,而不是C字符串(const char*)?你需要先转换一下数据,比如可以使用 QString::toAscii() 方法:

pValue = PyString_FromString(fileName.toAscii().data());

撰写回答