Dan*_*117 10 python string unicode binding ascii
我目前正在将所有C++引擎类绑定到python以用于游戏脚本编写目的.最新的挑战是,当你说在脚本中创建一个变量时,如
string = 'hello world'
Run Code Online (Sandbox Code Playgroud)
这成为一个PyUnicodeObject.接下来,我们要在绑定的C端函数的脚本中调用此对象的函数.PrintToLog(字符串),作为一个例子,我们可以说这个c函数是这样的
void PrintToLog( const char * thisString )
{
//file IO stuff as expected
myLog << thisString;
//more stuff involving fileIO
}
Run Code Online (Sandbox Code Playgroud)
所以我的绑定需要从PyUnicodeObject中提取一个char*,它首先会被python传递给我的泛型函数处理程序,后者又会将pyobjects提取并转换为正确的c-side类型并将其传递给我的函数.
我能找到的唯一函数提取wchar_t*...无论如何都得到ascii表示,因为我们只使用ascii字符集.
编辑:我使用的是Python 3.2,其中所有字符串都是unicode
use*_*166 11
我在使用Python3时遇到了类似的问题.我解决了它如下.
如果您有一个PyUnicodeObject "mystring",请执行类似的操作
PyObject * ascii_mystring=PyUnicode_AsASCIIString(mystring);
PrintToLog(PyBytes_AsString(ascii_mystring));
Py_DECREF(ascii_mystring);
Run Code Online (Sandbox Code Playgroud)
PyBytes 在这里解释.
我相信你正在寻找的功能是PyUnicode_AsASCIIString.这将为您提供一个非unicode(ASCII)python字符串.然后你可以采用常规方法char*从中提取a .
| 归档时间: |
|
| 查看次数: |
5071 次 |
| 最近记录: |