C++11增加了unicode字面量的支持,可以通过L来定义宽字符:str::wstring str = L"中国人";
将宽字符转换为窄字符串需要用到codecvt库中的std::wstring_convert
例:
#include "stdio.h"#include#include #include using namespace std;void main(){ wstring wstr = L"中国人"; cout << "unicode编码:" << wstr.c_str() << endl; wstring_convert > converter(new codecvt ("CHS")); string str = converter.to_bytes(wstr); cout << "ansi编码:" << str << " " << str.c_str() << endl; wstring wstr1 = converter.from_bytes(str); wcout.imbue(locale("CHS")); // 初始化cout为中文输出 wcout << L"unicode编码:" << wstr1 << endl;}