如何将 wchar_t* 转换为字符串

How do I convert wchar_t* to string?

本文关键字:转换 字符串 wchar      更新时间:2023-10-16

我是C++新手。

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

我不能在条件下使用wstring。

我在下面有代码:

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

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

我必须在哪里修复它?

你试图倒退。不要将宽字符截断为 char s(这是非常有损的),而是将char s 扩展到宽字符。

也就是说,将您的std::string转换为std::wstring并将两个std::wstring连接起来。

我不确定你的目标是什么平台。如果你在Windows平台上,你可以调用WideCharToMultiByte API函数。有关文档,请参阅 MSDN

如果你在Linux上,我认为你可以使用libiconv函数,试试谷歌。

当然,有一个用于Windows的libiconv端口。

一般来说,如果您对

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