2009-02-20 35 views
4

我需要在各种编码的python对象和c字符串之间进行转换。从AC串去使用PyUnicode_Decode,但林不知道如何走另一条路Python c-api和unicode字符串

//char* can be a wchar_t or any other element size, just make sure it is correctly terminated for its encoding 
Unicode(const char *str, size_t bytes, const char *encoding="utf-16", const char *errors="strict") 
    :Object(PyUnicode_Decode(str, bytes, encoding, errors)) 
{ 
    //check for any python exceptions 
    ExceptionCheck(); 
} 

我要创建另一个函数,采用Python的Unicode字符串,并使用其放入缓冲区为Unicode对象是相当简单的给定encodeing,如:

我怀疑它具有财产以后做然而PyUnicode_AsEncodedString一个返回的PyObject,所以我不知道如何将它放入我的缓冲区...

注:两上面的方法是C++ Unicode的成员类封装了Python API中 我使用Python 3.0

回答

3

我怀疑它具有财产以后做然而PyUnicode_AsEncodedString一个返回的PyObject,所以我不知道如何将它放入我的缓冲区...

PyObject返回的是一个PyStringObject,所以你只需要使用PyString_SizePyString_AsString来得到一个指向字符串缓冲区的指针,并将它指向你自己的缓冲区。

如果你正在寻找一种方式去从PyUnicode对象直接到自己的字符缓冲区,我不认为你可以做到这一点。