与平台相关的方法
Win32
使用 WideCharToMultiByte
和MultiByteToWideChar
Apple
使用CFStringCreateWithBytes
linux
使用iconv库
与平台无关的方法
C内置方法
使用mbstowcs
和wcstombs
。
此方法依赖当前的设置的全局C Locale。
C++方法
使用codecvt标准库中的codecvt_byname
。
#include <codecvt> // 需要包含这个头文件
const char* GBK_LOCALE_NAME = ".936"; //locale name,这个很坑爹,也与平台相关
wstring_convert<codecvt_byname<wchar_t, char, mbstate_t>>
cv1(new codecvt_byname<wchar_t, char, mbstate_t>(GBK_LOCALE_NAME));
wstring ws = cv1.from_bytes(s.c_str());
cout << s << endl;
cout << cv1.to_bytes(ws) << endl;