C++中 string 与 wstring 相互转换
它们俩相互转化有一个前提条件,string 的编码格式需要是utf8(一般系统默认编码)。
(wstring 类型一般是 utf16 或 utf32,一般用于 windows 系统)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
   | #include <string> #include <locale> #include <codecvt>
 
 
 
  std::string wstr2str(const std::wstring &wstr) {     std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;     std::string str = converter.to_bytes(wstr);     return str; }
 
 
 
  std::wstring str2wstr(const std::string &str) {     std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;     std::wstring wstr = converter.from_bytes(str);     return wstr; }
 
 
 
  char *str2cstr(const std::string &str) {     return str.c_str(); }
 
 
 
  wchar_t *wstr2wcstr(const std::wstring &wstr) {     return wstr.c_str(); }
   | 
补充
1 2 3 4 5
   |  std::string u8str = u8"可以有中文,English,数字123等";
 
  str::wstring lstr = L"可以有中文,English,数字123等";
 
  |