首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

BCB中怎么将wchar_t*转化成char*类型的

2012-02-03 
BCB中如何将wchar_t*转化成char*类型的?BCB中如何将wchar_t*转化成char*类型的?我现在用的两种函数1.WideC

BCB中如何将wchar_t*转化成char*类型的?
BCB中如何将wchar_t*转化成char*类型的?

我现在用的两种函数
1.WideCharToMultiByte(CP_UTF8, 0, WStr, -1, CStr, len, NULL, NULL );
但是用这个函数的时候,很多的特殊符号,或者别的国家的语言会转错。不知道是不是参数写错了

2.char* cLocale = setlocale(LC_ALL, "");
wcstombs(CStr, WStr, wcslen(WStr));
用第二种方法的时候特殊符号倒是正确的。但是会出现多余的字符出来。
比如:<string name="ellipsis" msgid="7899829516048813237">"…"</string>会变成
  <string name="ellipsis" msgid="7899829516048813237">13237">"…"</string>
完全不能理解到底为什么。

请教各位大大,是不是有别的什么办法。或者我有什么地方写的不对,请指出来,我也可以贴出详细的代码。

[解决办法]
用wcstombs,要注意缓冲的长度。

如果用VCL,就简单许多:
strcpy(CStr, AnsiString(WStr).c_str());
即可。

同样,要注意缓冲溢出。

热点排行