与平台相关的方法

Win32

使用 WideCharToMultiByteMultiByteToWideChar

Apple

使用CFStringCreateWithBytes

linux

使用iconv库

与平台无关的方法

C内置方法

使用mbstowcswcstombs
此方法依赖当前的设置的全局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;