c++11新特性之宽窄字符转换

C++11增加了unicode字面量的支持,可以通过L来定义宽字符:str::wstringstr=L"中国人";将宽字符转换为窄字符串需要用到codecvt库中的std:

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

  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;
}

c++11新特性之宽窄字符转换

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120133.html原文链接:https://javaforall.net

(0)
上一篇 2021年12月28日 下午12:00
下一篇 2021年12月28日 下午12:00


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号