c++11新特性之宽窄字符转换
C++11增加了unicode字面量的支持,可以通过L来定义宽字符:str::wstring str = L"中国人";
将宽字符转换为窄字符串需要用到codecvt库中的std::wstring_convert
例:
#include "stdio.h" #include<string> #include<codecvt> #include<iostream> using namespace std; void main() { wstring wstr = L"中国人"; cout << "unicode编码:" << wstr.c_str() << endl; wstring_convert<codecvt<wchar_t, char, mbstate_t>> converter(new codecvt<wchar_t, char, mbstate_t>("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; }