跳至正文
View Categories

1 min read

主要内容 #

1. 字符和字符串 #

在上节课中,我们讲解了 字符类型 char ,并且介绍了字符在 C++ 中的表示

// 以下都是字符

char D = 'A';
char A = 'a';
char S = '0';
char H = '.';
char I = '+';
char M = '*';

根据我们的生活经验,除了使用一个字符以外,我们经常将字符连接起来使用,比如

// 以下每一行,都是一个“将字符连接起来”的示例

apple
Hello World!
4 * 8 = 64 / 2.0;

在 C++ 中,我们将这样的表达,称为 “字符串”

“字符”和“字符串”的关系,如下图所示:

当然,这是一个类比啊,哈哈。

1.1 字符串的语法 #

在 C++ 中,字符串这样表示:

// 以下都是字符串

char da [] = "apple";
char shi[] = "Hello World!";
char ma [] = "4 * 8 = 64 / 2.0;";

char dashima[] = "A";

由什么值得注意的吗?

  • 字符串,使用双引号(”)包围。
  • 字符串,可以有空格。
  • 所有的 ASCII 中的字符,都可以组成字符串。
  • 字符串,也可以只由一个字符组成。
  • 字符串,变量的声明语法,和一般的变量不同。
  • 下面,就字符串变量的声明,做详细说明。

    1.2 字符串变量的声明语法 #

    语法结构:

    char 变量名 [] = "字符串";

    和之前的变量声明相比,这里增加了一个中括号([])。请特别注意。

    由于,“字符串”其实是由“字符”组成的,所以,声明中也体现了他们之间的联系。
    字符串是使用 char 来作为基础的。

    在编程中,大家应该将字符串看作一张表格。这样是非常有用的。

    下面,讲解一下这个表格有什么作用。

    2. 索引 #

    对于一个表格来说,最重要的,就是怎么知道表格中的值。
    字符串,可以看作一个表格,所以,应该如何获得字符串中的数据呢?

    2.1 索引读取 #

    请补全,并运行代码

    char str[] = "apple";
    std::cout << str[3] << std::endl;

    请注意,输出的字符是哪一个,是 p 还是 l ?

    对一个字符串变量,可以使用中括号+数字,来读取里面的内容。

    要特别注意的是,数字代表的意义是表格的索引号

  • 索引号,从 0 开始。
  • 2.2 索引写入 #

    请补全,并运行代码

    char str[] = "apple";
    str[3] = 'L';                    // 修改字符串中的值。注意,'L'是一个字符
    std::cout << str << std::endl;   // 输出字符串
  • 字符串中,每一个元素,都是一个字符
  • 2.3 输出字符串 #

    请补全,并运行代码

    char str[] = "apple";
    std::cout << str << std::endl;   // 输出字符串

    大家是否又有着这样的疑惑,为什么这里要把“读”和“写”分开介绍呢?这是因为,“读”和“写”的概念,在程序非常重要。
    我们有必要,注意一个变量的“可读”和“可写”特性(也就是,这个变量是不是可以被改变)。

    2.4 可读可写的概念 #

    这些概念,举几个例子就清楚了。(近似说明,并不完全准确)

    “可读”“可写”          // 用铅笔画画
    “可读”“不可写”        // 书上的文字,对于读者来说,就是“可读”“不可写”
    “不可读”“可写”        // 一般没有这种逻辑。
    “不可读”“不可写”      // 国家的最高机密,对于不同百姓来说,就是“不可读”“不可写”

    在编程中,一般所有的变量都是可读的。但是,对可写权限有一些限制。
    我们目前学习到的所有类型的变量,都是“可读”“可写” 的。有一些特殊的变量,我们将在后续课程中一一介绍。

    小结一下,程序中,常见的读写权限组合为:

    “可读”“不可写”        // 低权限
    “可读”“可写”          // 高权限

    习题 #

    课后练习