C++11增加了Unicode字面量的支持,可以通过L来定义宽字符:

std::wstring str = L"中国人";    // 定义Unicode字符串

将宽字符串转换为窄字符串需要用的codecvt库种的std::wstring_convert。std::wstring_convert需要借助以下几个Unicode转换器:

  • std::codecvt_utf8,封装了UTF-8与UCS2及UTF-8与UCS4的编码转换。
  • std::codecvt_utf16,封装了UTF-8与UCS2及UTF-16与UCS4的编码转换。
  • std::codecvt_utf8_utf16,封装了UTF-8与UTF-16的编码转换。

std::wstring_convert使std::string和std::wstring之间的转换变得很方便,如下代码:

#include <iostream>
#include <string>
#include <codecvt>int main(void)
{std::wstring str = L"我是中国人yzb";std::wstring_convert<std::codecvt<wchar_t, char, std::mbstate_t>> converter(new std::codecvt<wchar_t, char, std::mbstate_t>("CHS"));std::string narrowStr = converter.to_bytes(str);std::wstring wstr = converter.from_bytes(narrowStr);std::cout << narrowStr << std::endl;std::wcout.imbue(std::locale("chs"));  //初始化cout为中文输出std::wcout << wstr << std::endl;system("pause");return 0;
}

C++11 宽窄字符转换相关推荐

  1. 字符串操作--宽窄字符转换

    MultiByteToWideChar int MultiByteToWideChar(_In_ UINT CodePage,_In_ DWORD dwFlags,_In_ LPCSTR lpMult ...

  2. C++ 宽、窄字符转换

    目录 locale setlocale函数 设置字符编码 单字符宽字符互相转换 mbstowcs函数 wcstombs函数 mbtowc函数 wctomb函数 宽.窄字符转换总结 查看本文前先弄清字符 ...

  3. mysql将字符转换成数字

    在操作mysql时,经常需要将字符转换成数字,这一步虽然简单,但不常用的话也很容易忘记,现将在网上找到的方法记录如下: 1.将字符的数字转成数字,比如'0'转成0可以直接用加法来实现 例如:将pony ...

  4. mysql怎么把字符变成数字_mysql将字符转换成数字

    在操作mysql时,经常需要将字符转换成数字,这一步虽然简单,但不常用的话也很容易忘记,现将在网上找到的方法记录如下: 1.将字符的数字转成数字,比如'0'转成0可以直接用加法来实现 例如:将pony ...

  5. mysql 将 字符 转换成 数字

    在操作MySQL时,经常需要将字符转换成数字,这一步虽然简单,但不常用的话也很容易忘记,现将在网上找到的方法记录如下: 1.将字符的数字转成数字,比如'0'转成0可以直接用加法来实现 例如:将pony ...

  6. 通过编写串口助手工具学习MFC过程——(三)Unicode字符集的宽字符和多字节字符转换...

    通过编写串口助手工具学习MFC过程 因为以前也做过几次MFC的编程,每次都是项目完成时,MFC基本操作清楚了,但是过好长时间不再接触MFC的项目,再次做MFC的项目时,又要从头开始熟悉.这次通过做一个 ...

  7. 【字符转换】——全角和半角转换

    背景 在我们使用搜狗输入法的时候会有全角和半角的切换,首先看一下这两者的区别吧 全角,指一个字符占用两个标准字符位置的状态,也是排字的度量单位,宽度等于所使用的文字的磅数汉. 半角,即一个字符占用一个 ...

  8. C++知识精讲11——字母大小写转换讲解(单个字母基础版)

    本文我们来讲C++知识精讲的第11篇,C++知识精讲11--字母大小写转换讲解(单个字母基础版),此专栏会讲许多,各种各样的类型,如果喜欢此专栏请订阅持续关注,感谢大家的支持.接下来,进入今天的知识精 ...

  9. 使用Python和MongoDB开发字符转换MD5工具识

    实验目的: 会用Python开发MongoDB的应用程序 能够把Python GUI文本框的内容保存到MongoDB中 能够把MongoDB中的数据显示到Python GUI上 实验内容: 题目1:把 ...

最新文章

  1. 大话设计模式(五 体会简单工厂模式的美妙)
  2. CSS中控制不换行属性
  3. 这些人,建议你不要去贷款了
  4. java-抽象类和接口对区别
  5. python做一个小游戏_利用python做个小游戏
  6. android theme.appcompat.light,Theme.AppCompat.Light的解决方法
  7. 阿姆斯特朗回旋加速喷气式阿姆斯特朗炮
  8. java web play_玩转 Java Web 应用开发:Play 框架
  9. l310加完墨水后需要怎样设置_epson打印机没有墨水加了墨水后还是打印不了怎么解决...
  10. 看完这篇iOS面试题,一天3offer!!!
  11. vue集成阿里云Aliplayer直播点播组件
  12. 新书推荐:《AI 3.0》
  13. C# winform表格datagridview行高自动设置问题
  14. 各种后缀名--使用什么软件打开
  15. dede 后台 一直显示验证码不正确的原因
  16. 编写程序读取一系列整数,找出它们的最大数,然后计算该数的出现次数,假定输入以0结束。
  17. java 动态切换数据源_Java动态切换数据源(AOP)
  18. 时间抖动(jitter)--学习笔记
  19. NLP.TM[36] | NLP之源:n-gram语言模型
  20. 可恶,IE中的window.open()

热门文章

  1. 机器学习中的 precision、recall、accuracy、F1 Score
  2. python图片识别是否p过_用 Python 和 OpenCV 检测图片上的条形码
  3. 服务器改配项目,网络服务器搭建(项目五)[xxxx1214修改].ppt
  4. ubuntu 16.04 出现failed to start session解决方法
  5. vue2项目中如何接入视频监控
  6. 视频转gif【不要钱!不要会员!还很方便!】
  7. 信息管理毕业设计 SSM的员工_学生宿舍后勤管理系统(源码+论文)
  8. 出成绩了. 全国大学生数学建建模浙江赛区 评审得奖情况
  9. 【C语言】程序阅读题
  10. 体外应用Cas9系统实现对上百kb的基因组片段的靶向克隆