[英]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.