我是C ++的新手。
我正在尝试将wchar_t *转换为字符串。
我不能在条件中使用wstring。
我的代码如下:
wchar_t *wide = L"中文";
wstring ret = wstring( wide );
string str2( ret.begin(), ret.end() );
但str2会返回一些奇怪的字符。
我在哪里修理它?
答案 0 :(得分:3)
你正试图向后做。不要将宽字符截断为char
(非常有损),而是将char
扩展为宽字符。
即,将std::string
转换为std::wstring
并连接两个std::wstring
。
答案 1 :(得分:1)
我不确定您要定位的平台。如果您使用的是Windows平台,则可以调用WideCharToMultiByte API函数。有关文档,请参阅MSDN。
如果您使用的是Linux,我认为您可以使用libiconv功能,请尝试谷歌。
当然,Windows上有一个libiconv端口。
一般来说,如果你对字符编码一无所知,这对于一个新的初学者来说是一个相当复杂的话题 - 有很多背景知识需要学习。