string转wstring,wstring转string,utf8转utf16,utf16转utf8为了节省存储空间,一般我们的文件或者数据使用UTF-8保存或传输。但是当我们需要对单个字符逐个处理的时候,UTF-8的变长存储又略显不便,此时可能需要转换到UTF-16,这样每个字都是wchar_t固定双字节长度,比较好操作。幸运的是,我们无需借助其他工具,C++标准库中就提供了这样的转换函数。注意 使用这些转换函数之前必须要调用 setlocale() 设置环境locale,例如:setlocale(LC_CTYPE, "en_US.utf-8");比如,把保存在std::string中的UTF-8字节流转换成UTF-16并保存在std::wstring中:std::wstring s2ws(const std::string& s)
{
const char* str = s.c_str();
size_t len = s.size() + 1;
wchar_t *wstr = new wchar_t[len];
std::mbsrtowcs(wstr, str, len);
std::wstring ret(wstr);
delete [] wstr;
return ret;
}相反,从std::wstring转
...
继续阅读
(32)