当前位置: 首页 > article >正文

关于字符类型

编码规范的本质

计算机只能储存数字,不能存字符,如果我们要储存字符就要用到编码规范,当使用某个字符时,通过编码规范,把对应得到数字显示成它对应的字符,当我们要储存某个字符时,也是通过编码规范,储存它所对应的数字,编码规范就像一本字典,里面储存的是数字和字符一一对应的关系。

知识扩展*:计算机里面储存的都是数字,图片、影音、文件等都是以数字的形式储存在里面

字符类型

类型

内存占用(字节)

说明

char

1

ASCII字符

wchar_t

2

宽字节字符(采用utf-16标准或utf-32标准)

char16_t

2

utf_16字符

char32_t

4

utf_32字符

在ASCII中,两个char才能显示中文,为了解决这个问题,引入了宽字节字符,一个wchar_t就能显示中文,在VS2019,采用utf-16标准,在其他编译器下,可能会采用其他标准,比如utf_32,并不稳定。另外它显示英文时也是占用两个字节

char

所有的char类型都是数字,都可以进行加减,只不过优先被表现成了字符

char charA {'A'};
char charA1 {65};
charA++;
std::cout<< charA <<charA1;

这两个charA输出后都是A

wchar_t

wchar_t wcharA {L'A'};
wchar_t wcharB {L'我'}
std::cout<<whcarA;
std::wcout<<wcharA;
std::cout<<wcharB;
std::cout<<sizeof(wcharA)<<sizeof(wcharB);
std::wcout<<wcharB;
  1. 赋值的时候前面都要加上L,用以表示这是个宽字节字符

  1. 第3行输出结果为65,说明cout不支持wchar_t的编码规范,仅支持char类型 的编码规范,要用wcout来输出

  1. cout输出wcharB时,会输出25105,说明中文的数字编码比英文编码大很多

  1. 第6行输出了2和2,说明无论是中文还是英文,wchar_t都是2字节

  1. 最后一行wcout输出了一个空格,说明它输出中文时不支持,需要设置头文件

设置头文件

#include<locale>
#include<iostream>
setlocale(LC_ALL,"chs");
wchar_t wcharA {'我'};
std::wcout<<wcharA;

要想输出中文,要调用头文件locale,并且通过setlocale函数设置中文

char16_t、char32_t

char16_t char16 {u'a'};
char32_t char32 {U'A'};
  1. 前面加u,表示采用utf-16标准,前面加U,采用utf-32标准

  1. wcout和cout都不支持16标准和32标准,所以用这两个输出后结果都为65

ASCII编码表

换行对应了10

std::cout<<A<<(char)10;

这里能换行

0对应了表里面的48

1对应了49

...

9对应了57

可以依照ACSII顺序给0-9进行排序,比如要给身份证号进行排序时,可以采用ASCII 表。


http://www.kler.cn/a/1379.html

相关文章:

  • moviepy 将mp4视频文件提取音频mp3 - python 实现
  • 【Docker】docker compose 安装 Redis Stack
  • 统计模型的Flops和Params
  • 网络-ping包分析
  • 【14】模型训练自制数据集前的一些数据处理操作
  • 10_Redis数据结构-HyperLogLog基数统计
  • 基于 gma 绘制古代洛阳 5 大都城遗址空间分布地图
  • 使用vite创建vue3工程
  • 【SpringBoot项目实战】瑞吉外卖优化篇
  • 美团笔试-3.18
  • 微前端-qiankun
  • 分布式微服务架构下网络通信的底层实现原理
  • GPT-4最震撼我的一点
  • Python截图自动化工具
  • MySQL高级面试题整理
  • 面试造火箭?GitHub顶级“java 复习宝典“一一攻克!star破数十万
  • 计算机面试常见问答题目
  • 解读Flaky Test
  • 并发基础之线程池(Thread Pool)
  • SpringBoot(微服务)注册分布式Consul
  • 第十四届蓝桥杯三月真题刷题训练——第 15 天
  • Linux环境C语言开发基础
  • 进程和线程的区别和联系
  • Linux分文件编程:静态库与动态库的生成和使用
  • Java二叉树的前中后序遍历
  • Hive 数据倾斜