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等";
|