如何将wchar_t *转换为字符串?

时间:2014-03-05 11:27:07

标签: c++ string converter wchar-t

我是C ++的新手。

我正在尝试将wchar_t *转换为字符串。

我不能在条件中使用wstring。

我的代码如下:

wchar_t *wide   = L"中文";
wstring ret     = wstring( wide );
string str2( ret.begin(), ret.end() );

但str2会返回一些奇怪的字符。

我在哪里修理它?

2 个答案:

答案 0 :(得分:3)

你正试图向后做。不要将宽字符截断为char(非常有损),而是将char扩展为宽字符。

即,将std::string转换为std::wstring并连接两个std::wstring

答案 1 :(得分:1)

我不确定您要定位的平台。如果您使用的是Windows平台,则可以调用WideCharToMultiByte API函数。有关文档,请参阅MSDN。

如果您使用的是Linux,我认为您可以使用libiconv功能,请尝试谷歌。

当然,Windows上有一个libiconv端口。

一般来说,如果你对字符编码一无所知,这对于一个新的初学者来说是一个相当复杂的话题 - 有很多背景知识需要学习。