string,wstring,cout,wcout 与中文字符的输入输出

2023-05-16

首先说明是什么string与wstring

在C++标准里定义了两个字符串string和wstring 

typedef basic_string<char> string; 

typedef basic_string<wchar_t> wstring; 

前者string是常用类型,可以看作char[],其实这正是与string定义中的_Elem=char相一致。而wstring,使用的是wchar_t类型,这是宽字符,用于满足非ASCII字符的要求,例如Unicode编码,中文,日文,韩文什么的。对于wchar_t类型,实际上C++中都用与char函数相对应的wchar_t的函数,因为他们都是从同一个模板类似于上面的方式定义的。因此也有wcout, wcin, werr等函数。      

实际上string也可以使用中文,但是它将一个汉字写在2个char中。而如果将一个汉字看作一个单位wchar_t的话,那么在wstring中就只占用一个单元,其它的非英文文字和编码也是如此。

什么是locale

C/C++程序中,locale将决定程序所使用的当前语言编码、日期格式、数字格式及其它与区域有关的设置,locale设置的正确与否将影响到程序中字符串处理(wchar_t如何输出、strftime()的格式等)。因此,对于每一个程序,都应该慎重处理locale设置。C locale和C++ locale是独立的。C locale用setlocale(LC_CTYPE, “”)初始化,C++ locale用std::locale::global(std::locale(“”))初始化。这样就可以根据当前运行环境正确设置locale。

什么是imbue

imbue函数是指对象引用,表示输出时,使用的区域语言对象。
函数原型:
locale basic_ios::imbue(const locale&loc);
参数说明:
locconst 对象引用,表示输出时,使用的区域语言对象
返回值:之前的使用的区域语言

c++中,可以直接利用string及cout进行中文的存储及输出:

#include <iostream>  
#include <string>  
using namespace std;  
  
void main()  
{  
    string s1="第一";  
    cout<<s1<<endl;   
}  
正常输出:
第一
但是有些时候不得不用到wstring来存储中文字符,这时输出需要
导入locale头文件
中文字符前需要加L,并用wstring存储
输出前更改本地语言,wcout.imbue(locale("chs"))
用wcout输出

#include <iostream>   
#include <string>   
#include <locale>   
using namespace std;  
  
void main()  
{  
    string s1="第一";  
    wstring s2=L"第二";  
    cout<<s1<<endl;  
    wcout.imbue(locale("chs"));  
    wcout<<s2<<endl;  
}  

结果便是:

第一

第二

wstring 返回“第二”的size为2.如果是string,返回的size为4.


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

string,wstring,cout,wcout 与中文字符的输入输出 的相关文章

随机推荐

  • 邀请函 | 2022 OpenAtom XuperChain 开源技术沙龙(郑州站) 报名启动!

    随着区块链技术逐步走向成熟 xff0c 区块链技术开始逐步赋能实体经济中的各个产业 xff0c 从金融到政务再到版权保护等领域 xff0c 逐渐形成了各领域的产业链条 xff0c 区块链的应用空间也在进一步放大 为了让广大区块链爱好者更好地
  • 已知IP地址和子网掩码计算网络号

    已知B类地址的子网掩码为255 255 0 0 xff0c 假设某B类地址为127 24 36 55 xff0c 那么它的网络号为 xff1a xff08 xff09 A 127 24 0 0 B 0 0 36 55 C 255 255 3
  • [技巧]Ubuntu与Windows10局域网共享文件夹

    已测试平台 Windows 10Ubuntu 18 04Ubuntu 16 04 Ubuntu 共享文件到 Windows 官方教程 xff1a https ubuntu com tutorials install and configur
  • 纯sql解决非空则按条件查询,条件值为空则不使用该条件查询

    纯SQL解决方案当传入某个值为查询条件 xff0c 非空则按条件查询 xff0c 条件值为空则不使用该条件查询 xff08 初版 xff1a 仅供参考 xff0c 暂不考虑SQL优化 xff09 sql如下 xff1a select fro
  • 页面跳转隐藏url参数

    在某些特定的情况下 xff0c 直接请求会在url显示参数传值等 xff0c 基于简单的安全性考虑 xff0c 可以去掉参数 xff0c 但是传参问题有出现了 xff0c 以下提供了一个简单的解决方案 1 a标签直接url跳转改为点击事件
  • 日期工具类

    span class token comment 获取日期之间的天数 64 param d1 64 param d2 64 return span span class token keyword public span span clas
  • centos7无网安装nginx

    解压安装nginx cd home nginx 解压 tar zxvf nginx 1 9 9 tar gz 进入nginx目录 cd nginx 1 9 9 配置 configure prefix 61 usr local nginx m
  • vue-html5-editor集成后有序列表无序列表功能问题

    解析原因 xff1a 有序列表是基于 lt ol gt lt li gt 这2个标签的 xff0c 默认这2个标签是有样式的 xff0c 可能因为网站全集样式对这2个标签的样式进行了改动 xff0c 导致默认样式丢失 xff0c 失去了排序
  • ORACLE读写分离(注:根据网上资料搭建完成步奏总结)

    研究问题 xff1a 1 什么是读写分离 xff1f 2 为什么要做读写分离 xff1f 3 ORACLE 读写分离的方式 xff0c 各有优缺点 xff1f 4 详解其中一种ORACLE 读写分离方式 一 什么是读写分离 xff1f 如图
  • ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

    一 安装前准备 1 2台或多台linux服务器 2 每台服务器一个公用ip一个私有ip 3 公有ip xff1a 其他主机访问 2台主机最好同一ip段 4 私有ip xff1a 2台或多台虚拟机互访 2台主机最好同一ip段 5 注意 xff
  • RequestUtils工具类

    package com spring utils import javax servlet http HttpServletRequest import org springframework web context request Req
  • “玉出东方”——汉代错金稀有玉器数字藏品即将发售!

    诗经 里说 言念君子 xff0c 温其如玉 xff1b 孔子云 玉之美 xff0c 有如君子之德 xff0c 玉德是中国儒家学派的最高追求 xff0c 更是一种能彰显品格和身份的奢侈品 玉 xff0c 传承了几千年 xff0c 在东方的文明
  • 百度编辑器Ueditor上传控件相关问题解决

    1 问题原因 xff1a 由于百度编辑器相关jar包里面的class文件在某些特殊的情况下无法完全引入 xff0c 或者映入过后无法读取config json的配置文件导致上传的相关配置不正确 2 解决办法 xff1a 修改ueditor
  • OVS端口镜像(十四)

    OVS上实现端口镜像的基本流程如下 创建mirror xff0c 在mirror中指定镜像数据源及镜像目的地将创建的mirror应用到bridge中 镜像数据源可以通过下面几个选项来指定 select all 布尔值 xff0c 设置为tr
  • openvswitch 流表操作(四十八)

    流表组成 每条流表规则由一些列字段组成 xff0c 可以分为基础字段 匹配字段和动作字段三部分 在打印流表时 xff0c 在流表中还存在一些显示字段 xff0c 如duration idle age等 xff0c 此处把这些字段也暂时归之于
  • C#/winform设置窗体自动缩放适应不同尺寸的电脑屏幕大小

    窗体属性 xff1a AutoScaleMode属性 xff0c 可以设置窗体随着分辨率改变来适应电脑屏幕 系统默认是 xff1a Inherit None xff1a 禁用自动缩放 默认时 Font xff1a 根据类使用的字体 xff0
  • Debain系统软件安装(二)

    目录 一 安装sudo命令 二 安装jdk8 三 更换软件源 四 Debian 安装 yum 五 安装zip unzip curl lrzsz NUMA 六 安装Maven 七 问题 一 安装sudo命令 1 xff09 执行sudo命令
  • CAS 6.5 安装部署

    从cas overlay template安装apereo cas 6 5并连接CAS客户端cas overlay template 一 什么是单点登录 简单点说 单点登录的英文名称为Single Sign On xff0c 简写为SSO
  • Ubuntu apt-get 国内镜像源替换(新手必看,超详细!各种镜像源网站都有)

    点击名称即可进入对应网站 阿里云镜像开源镜像站 xff08 已经更换地址 xff09 阿里云镜像开源社区镜像站 xff08 新地址 xff09 网易开源镜像站 清华大学开源镜像站 中科大开源镜像站 1 首先进入开源镜像站获取相应连接 这里以
  • string,wstring,cout,wcout 与中文字符的输入输出

    首先说明是什么string与wstring 在C 43 43 标准里定义了两个字符串string和wstring typedef basic string lt char gt string typedef basic string lt