如何将 wchar_t* 转换为字符串
How do I convert wchar_t* to string?
我是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端口。
一般来说,如果您对字符编码一无所知,对于新手初学者来说,这是一个相当复杂的主题 - 有很多背景知识需要学习。
相关文章:
- wcstombs_s(),转换字符串的长度
- 使用 CStringW/CStringA 和 CT2W/CT2A 转换字符串有什么区别?
- 无法转换字符串插入函数的参数
- 转换字符串向量:基于先前的值跳过元素
- 从中间器转换字符串不起作用,出了什么问题?
- 失败的证明转换字符串到枚举类
- 如何使用正则表达式和提升转换迭代器标记和转换 c 字符串
- 使用java jni时转换字符串类型
- 如何避免在转换字符串令牌流时重复istringstream构造
- 阿托伊未正确转换字符串
- C++,转换字符串,使连续下划线序列变为单个下划线
- 使用长算术转换字符串
- 转换字符串十进制数时的精度
- 将词法转换字符串提升为双精度
- 使用marshal_as函数转换字符串的性能
- C++不会从数据转换字符串
- 无论如何,在c++ /Qt中转换字符串到结构中的字段
- C++ 隐式类型转换字符串 -> int?
- 转换字符串到浮点数,c++实现
- 用于转换字符串大小写的函数