【发布时间】:2012-10-09 08:13:24
【问题描述】:
我确信这个问题被问了很多,但我只是想确保没有更好的方法来做到这一点。
基本上,我有一个 const char* 指向一个以 null 结尾的 C 字符串。我有另一个函数,它期望 const wchar_t* 指向具有相同字符的字符串。
目前,我一直在尝试这样做:
size_t newsize = strlen(myCString) + 1;
wchar_t * wcstring = new wchar_t[newsize];
size_t convertedChars = 0;
mbstowcs_s(&convertedChars, wcstring, newsize, myCString, _TRUNCATE);
delete[] wcstring;
我需要在很多地方进行这些转换,因为我正在处理需要一个或另一个的第三方库。这是推荐的解决方法吗?
【问题讨论】:
-
这在很大程度上取决于
const char*字符串的假定编码(可能是 UTF-8、ISO-Latin-1、KOI-8 等)。你必须知道那个编码。 gnu.org/software/libiconv library 你可能会感兴趣。 -
您基本上是在正确的轨道上。您可以通过首先使用空指针运行
mbstowcs来获得正确的目标大小。不要忘记在程序开始时运行std::setlocale("");。
标签: c++ unicode wchar-t c-strings