繁体   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