大家好,又见面了,我是全栈君
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;
}发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/120133.html原文链接:https://javaforall.cn