簡體   English   中英

如何從 PyObject str 中獲取 char 字符串?

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

PyUnicode_AsUTF8

const char* data = PyUnicode_AsUTF8(pValue.getObject());
std::cout << data << std::endl;

const char* PyUnicode_AsUTF8AndSize(PyObject *unicode, Py_ssize_t *size)

返回指向 Unicode objectUTF-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM