Python Unicode对象和C API(从pyunicode对象中检索char *)
我目前将所有C ++引擎类都绑定到python,以实现游戏脚本编写目的。最新的挑战是,当您说要在脚本中创建一个变量时,例如
string = 'hello world'
这将成为一个PyUnicodeObject。接下来,我们要从绑定的C端函数在脚本中的此对象上调用函数。例如,以PrintToLog(string)为例,这个c函数就是这样
void PrintToLog( const char * thisString )
{
//file IO stuff as expected
myLog << thisString;
//more stuff involving fileIO
}
因此,我的绑定需要从PyUnicodeObject中提取一个char
*,该字符将首先由python传递给我的通用函数处理程序,而后者又会将pyobjects提取并转换为适当的c端类型,并将其传递给我的函数。
我可以找到的唯一函数提取了wchar_t * …无论如何,都可以获得ascii表示,因为我们将仅使用ascii字符集。
编辑:我正在使用所有字符串都是unicode的Python 3.2
-
我相信您要查找的功能是PyUnicode_AsASCIIString。这将为您提供一个非Unicode(ASCII)python字符串。然后,您可以采用常规方法
char*
从中提取a 。