C++字符串详解

  • 内容
  • 评论
  • 相关

许多程序都大量应用到字符串。C++ 为处理字符串提供了两种不同数据类型:C 字符串 string 类

string 类库有许多处理字符串的函数,这些函数可以执行许多实用的和字符串相关的功能,并且提供了编程上的安全防护,而这正是 C 字符串处理函数所缺乏的。出于以上理由,你应该会更喜欢使用 string 类而不是 C 字符串。

尽管如此,每个 C++ 程序员都应该对C字符串有足够的了解。string 类构建于 C 字符串之上,所以,了解 C 字符串有助于理解 string 类。此外,还有很多程序是在 string 类加入到 C++ 标准之前编写的,这样的程序需要能理解 C 字符串的程序员来维护它们。最后,程序员如果需要编写和维护底层代码,例如 string 类库或操作系统的一部分,则必须使用 C 字符串来表示字符串数据。

C 字符串是存储在连续内存位置中的字符序列,并以 null 字符结尾。回想一下,null 字符是 ASCII 码为 0 的字符。在程序中,null 字符通常写成 '\0'。程序中通常使用整数 0 或常量 NULL 来表示 null 字符。因此,以下所有语句都会将 null 字符存储到字符变量中:

char ch1, ch2, ch3;
ch1 = '\0';
ch2 = 0;
ch3 = NULL;

由于数组是一系列连续的存储位置,它们存储相同类型的值,所以 C 字符串实际上是一个以 NULL 结尾的字符数组。C 字符串可以按以下 3 种形式之一出现在程序中:

  1. “硬编码”字符串文字。
  2. 程序员定义的字符数组。
  3. 指向字符的指针。

无论 C 字符串以 3 种形式中的哪一种出现在程序中,它始终是以 null 字符结尾的字符数组,并由指向数组中第一个字符的指针表示。换句话说,C 字符串的类型就是以下形式的:

char *

也就是说,C 字符串的类型是指向 char 的指针。

字符串常数

字符串常数作为用双引号括起来的字符序列直接写入程序中。例如:

"What is your name?"
"Bailey"

以上都是字符串常数。

当编译器遇到诸如 "Bailey" 这样的字符串常数时,它分配一个由 7 个字符组成的数组,在数组的前 6 个条目中存储 "Bailey" 的 6 个字符,然后将 null 字符存储在最后一个条目中,如图 1 所示。然后,编译器将数组的第一个字符的地址(char * 类型)作为字符串常数的值。



图 1 字符串常数的数组

本文标题:C++字符串详解

本文地址:https://www.hosteonscn.com/3880.html

评论

0条评论

发表评论

邮箱地址不会被公开。 必填项已用*标注