C++高性能并行编程与优化 - 课件 - 15 C++ 系列课:字符与字符串技术,用户自定义迭代器与算法 9. allocator ,内存管理与对象生命周期 ASCII 码 第 1 章 计算机如何表达字符 https://zh.wikipedia.org/wiki/ASCII 计算机如何表达字符 • 众所周知,计算机只能处理二进制 整数,字符要怎么办呢? • 于是就有了 ASCII 码表,他规定, 每个英文字符(包括大小写字母、 数字、特殊符号)都对应着一个整 32~126 这些整数就用于是表示这些 可显示字符 (printable character) 的。 计算机如何表达字符 • 除了可显示字符 (printable character) 外, ASCII 还规定了一 类特殊的控制字符 (control character) : • 0 表示空字符(‘ \0’ ) • 9 表示 Tab 制表符(‘ \t’ ) • 10 表示换行(‘ \n’ ) ) • 13 表示回车(‘ \r’ ) • 27 表示 ESC 键(‘ \x1b’ ) • 127 表示 DEL 键(‘ \x7f’ )等 • 0~31 和 127 这些整数,就构成了 ASCII 码中控制字符的部分。 关于控制字符的一个冷知识 • 在 Linux 命令行中启动 cat 。 • 试试按 Ctrl+R , Ctrl+E , Ctrl+C 等一系列 组合键,看到出现了什么? •0 码力 | 162 页 | 40.20 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 12 从计算机组成原理看 C 语言指针这是按值传递的,里面的修改不会变化外面 的值,符号小白程序员的思维,避免 C 语 言指针和数组的那些难以理解的坑。 字符串的本质究竟是什么? ASCII 字符对照表:把字符对应到 0~127 的整数,方便用计算机存储 • 为了让计算机也能够处理字符,英文使用 者发明了 ASCII 对照表,他们把英文字符 和一些标点符号逐个对应到一个 0~127 的整数,这也正好是 char 类型在正数部 分的表示范围。这就是为什么 wikipedia.org/wiki/ASCII 字符常量其实就是对应的 ASCII 码 • 我们知道 C 语言中的字符常量形如:‘ a’ 表示一个英文字符 a 。实际上 ‘ a’ 等价于 他的 ASCII 码 97 。 • 不信的话,你可以作为 %d 打印和 %c 打印看看,可见 char 的确有双重身份, 一方面是字符,一方面又是数字。 字符常量其实就是对应的 ASCII 码 • 我们知道 C 语言中的字符常量形如:‘ a’ 表示一个英文字符 a 。实际上 ‘ a’ 等价于 他的 ASCII 码 97 。 • 作为实验,我们可以把 char 设为 97 看 看,会发现结果没有任何不同。 • 这说明 ‘ a’ 只是一个方便程序员理解的写 法,实际上等价于直接写他的 ASCII 码。 字符组成的数组 • 字符组成的数组,就是字符串 • 这里我们在栈上创建了一个长度为 50 码力 | 128 页 | 2.95 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 14 C++ 标准库系列课 - 你所不知道的 set 容器说就是数值的大小比较。那么对 字符串类型 string 要怎么排序 呢? • 其实 string 类定义了运算符重 载 < ,他会按字典序比较两个 字符串。所谓字典序就是优先比 较两者第一个字符(按 ASCII 码比较),如果相等则继续比较 下一个,不相等则直接以这个比 较的结果返回。如果比到末尾都 相等且字符串长度一样,则视为 相等。 警告:千万别用 set做字符串集合。 这样只会按字符串指针的地址去判断相等, 0 码力 | 83 页 | 10.23 MB | 1 年前3
共 3 条
- 1













