char专门用于存储字符。但实际上char类型也是另一种整数。它必须能够表示计算机系统中的所有基本符号。

而在声明和使用char类型的变量中,我们可以选择直接给个字符或者整数

目录

一.声明与打印

二.转义字母

三.通用字符名

四.wchar_t

五.char16_t和char32_t

一.声明与打印

格式

char 标识符名 = ‘字母’或 数字

一般系统都是以ASCII码为主

Char对应java char对应的标识符_Char对应java

注意看这个图,你可以发现每个字符都有一个对应的十进制数。所以不管你传入的是数字还是字母,char类型变量都会在内存上保存系统对应字母的整数。

Char对应java char对应的标识符_c++_02

这个例子可以清晰的看到x,y内部存储的值就是97

还是不建议直接给97.因为不同机器所用的字符编码不同,同样的数字到不同的机器,所打印的字母可能是不同的。但给了字母,在任何编码上打印的都是这个字母。

二.转义字母

在编码当中,由一类的字母是我们无法打出来的。比如换行符,我相信你的键盘上面应该没有那个键能表示回车字符(enter是直接传输信号,并没有字符)还有双引号这些字符,这些已经被系统定义的还有其他作用的字符如果我们想要表达需要如何去做的?

这个时候就到了引入我们转义序列编码了



\a

警报铃声,运行响一下

\b

退格(活跃位置往前走,跑到a的位置上)

Char对应java char对应的标识符_c++_03


\f

换页(活跃位置跳到下一页,不过这个效果只能在打印机上才能出现效果)

\n

换行(活跃位置移动到下一行开始位置)

\r

:回车(活跃位置跳到行的开头)

\t

水平制表符(活跃位置移到下一个水平制表点。一般位第1,9,17,25个字符的位置)

\v

垂直制表符(活跃位置移到下一个垂直制表点,不过这个效果只能在打印机上才能出现效果)

\\

放斜杠(\):为了和转义字符的反斜杠区分开

\'

为了和单引号括起来的字符常量区分开

\"

为了和双引号括起来的字符串区分开



而如果要使用,直接像使用字面值一样就好了,也可以使用数字但不建议

Char对应java char对应的标识符_转义序列_04

这里cout.put属于cout对象的一个函数,它的任务就是打印一个字符。

这里重点介绍下\b,这个理解起来可能比较难,我们举个例子

Char对应java char对应的标识符_转义序列_05

注意看这个例子,我们使用5个\b退格到:符号后面来输入数字,你可以看到退格符不会擦除退出所经过的字符(_),但当我们输入数字45,前面两个_会被相应的擦除

三.通用字符名

通用字母名是C++一种表示特殊字符的机制,它独立于任何特定的键盘,它的用法类似于转义序列。

格式:\u + 4个十六进制数

这些位所表示的就是编码ISO 10646(ISO 10646和Unicode标准同步)的字符,所以你的程序必须支持ISO 10646,不然是无法打印的就像我这样

Char对应java char对应的标识符_转义_06

四.wchar_t

有的时候要处理的字符集可能无法用一个8位的字节表示,这个时候要么把字节改为16位。

不过还有另外一种方法,就是同时支持一个小型基本字符集(char)和一个较大的扩展字符集。而wchar_t就属于扩张字符集。

wchar_t类型也是一种整数类型(具体类型更具系统的底层类型决定),它有足够的空间,可以表示系统使用的最大扩展字符集。

而wchar_t的使用需要搭配iostream头文件当中wcin和wcout来专门处理wchar_t流(与普通的char流区分开)

Char对应java char对应的标识符_转义_07

这里可以看到在当前我的系统中wchar_t占用两个字节空间。

五.char16_t和char32_t

char16_t和char32_t,两者都属于无符号,前者占用2字节,后者占用4字节。

而如果要表示

char16_t常量,使用前缀u(小写)

char32_t常量,使用前缀U(大写)

Char对应java char对应的标识符_转义序列_08

char16_t和char32_t与wchar_t一样都是内置的整型,会随着底层类型变化而变化。而它们的出现也是为实现功能提供更多帮助。