我正在与一个将字符串作为 wchar_t 数组处理的库交谈。我需要将这些转换为 char 数组,以便我可以将它们交给 Python(使用 SWIG 和 Python 的 PyString_FromString 函数)。显然,并非所有宽字符都可以转换为字符。根据 wcstombs 的文档,我应该能够做类似的事情
wcstombs(NULL, wideString, wcslen(wideString))
测试字符串中的不可转换字符——如果有的话,它应该返回 -1。但是,在我的测试用例中,它总是返回-1。这是我的测试功能:
void getString(wchar_t* target, int size) {
int i;
for(i = 0; i < size; ++i) {
target[i] = L'a' + i;
}
printf("Generated %d characters, nominal length %d, compare %d\n", size,
wcslen(target), wcstombs(NULL, target, size));
}
这是生成这样的输出:
Generated 32 characters, nominal length 39, compare -1
Generated 16 characters, nominal length 20, compare -1
Generated 4 characters, nominal length 6, compare -1
知道我做错了什么吗?
在相关说明中,如果您知道直接从 wchar_t*s 转换为 Python unicode 字符串的方法,那将是受欢迎的。:) 谢谢!