[英]How to get char string from PyObject str?
嗨,我正在学习如何在 c++ 中使用 python 并且想知道如何将返回的 python 值转换为我可以在 Z6CE809EACF903926 中使用的值
这是我的代码:
CPyInstance pyInstance;
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append(\".\")");
CPyObject pName = PyUnicode_FromString("Info");
CPyObject pModule = PyImport_Import(pName);
if (pModule)
{
CPyObject pFunc = PyObject_GetAttrString(pModule, "getTracks");
if (pFunc && PyCallable_Check(pFunc))
{
CPyObject pValue = PyObject_CallObject(pFunc, NULL);
//print the returned string
}
else { std::cout << "Error: function getTracks()\n"; }
}
else { std::cout << "error: no module imported"; }
return 0;
def getTracks():
returnString = ""
for track in results['tracks'][:10]:
returnString += 'track : ' + track['name']
return returnString
您可以使用UTF-8 Codecs部分中的函数。
例如, PyUnicode_AsUTF8AndSize :
CPyObject pValue = PyObject_CallObject(pFunc, NULL);
Py_ssize_t size;
const char* data = PyUnicode_AsUTF8AndSize(pValue.getObject(), &size);
std::cout << std::string(data, size) << std::endl;
const char* data = PyUnicode_AsUTF8(pValue.getObject());
std::cout << data << std::endl;
const char* PyUnicode_AsUTF8AndSize(PyObject *unicode, Py_ssize_t *size)
返回指向 Unicode
object
的UTF-8
编码的指针,并将编码表示的大小(以字节为单位)存储为size
。size
参数可以是NULL
; 在这种情况下,不会存储任何大小。 返回的缓冲区总是附加一个额外的 null 字节(不包括在大小中) ,无论是否有任何其他 null 代码点。这会缓存 Unicode object 中字符串的
object
表示形式,随后的调用将返回指向同一缓冲区的指针。 调用者不负责释放缓冲区。[...]
const char* PyUnicode_AsUTF8(PyObject *unicode)
作为
PyUnicode_AsUTF8AndSize()
,但不存储大小。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.