使用Python的cType模块将Python发送到C++的字符串需要解析为CXCHAREP P(char *)。我发现我需要使用pythonpure字符串,而不是pythonunicode字符串。如果我使用unicode字符串,变量就会被覆盖而不是被正确地发送。下面是一个例子:
C++ +<
void test_function(char * a, char * b, char * c) {
printf("Result: %s %s %s", a, b, c);
}
Python
^{pr2}$运行上述Python代码将在stdout中提供以下内容:
Result: z z z
Result: x y z
这是为什么,这是ctypes的怪癖吗?如果我可以得到unicode字符串,有什么好方法可以避免这种怪癖呢?在
谢谢!在
尝试使用c_char而不是c_char: https://docs.python.org/2/library/ctypes.html
C/C++ has no real support for Unicode,所以你真的无能为力。您必须将ESEM编码为将其传递到C/C++世界中:根据UTF-8、UTF-16或UTF-32,可以根据用例使用USEF-8。在
例如,可以将它们编码为UTF-8,并传递一个字节数组(^ {CD1>}在Python和^ {CD2>} C/C++):
确切地说,你选择的编码是另一个故事,但这将取决于C++库愿意接受什么。在
相关问题 更多 >
编程相关推荐