#include <iostream>
#include <stdio.h>
#include <cstdlib>
#include <wchar.h>
using namespace std;
//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::mbstowcs(wstr, str, len);
std::wstring ret(wstr);
delete [] wstr;
return ret;
}
//std::wstring转换到std::string
std::string ws2s(const std::wstring& ws)
{
const wchar_t* wstr = ws.c_str();
size_t len = 2 * ws.size() + 1;
char *str = new char[len];
std::wcstombs(str, wstr, len);
std::string ret(str);
delete [] str;
return ret;
}
int main(int argc, char* argv[])
{
string ser = "医院联网结算";
setlocale(LC_CTYPE, "en_US.utf-8");
std::wstring ser_wstring = s2ws(ser);
printf("ser_wstring :[%s]\n",ser_wstring.c_str());
ser = ws2s(ser_wstring);
printf("ser :[%s]\n",ser.c_str());
return 0;
}
C++: wstring与string互转
最新推荐文章于 2025-03-11 10:51:10 发布