【C++初级技能书】6.字符串

各位同学大家好,这次我们来讲字符串。

1.数组字符串

说到字符串,那我们首先要说下字符。字符是一种类型,在C和C++中,单个的字符类型是char,想把字符说明白比较复杂,如果我们的目标是搞算法和竞赛的话,那这里可以简单地认为那些字母、空格等等都是字符,字符串就是多个字符组合起来,比如一个单词,甚至一串数字也可以认为是几个单个的数字字符组成的字符串。
字符串的表现形式之一是由数组来呈现,这个不和数组一起讲的原因就是数组是一个概念,字符是另一个概念,初学还是把这两个概念分开来讲可能好理解一些。
下面是单独存储一个单词"hello"并输出的例子:
 1 #include <iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     char word[6] = {'h', 'e', 'l', 'l', 'o'};
 6     cout << word << endl;
 7  
 8     getchar();
 9     return 1;
10 }

这里要说明的一点是:数组字符串最后一位是存了一个结束符'\0'的,这个结束符不会被输出,是数组字符串在内存中的存储方式。

2.字符串类型

这里的字符串类型,主要是针对C++语言的(C语言不能用这个),上面已经说过数组存字符串是C和C++语言的通用作法,而字符串在C++中还有一个专有的关键字(其实是一个类,不过目前可以简单的理解为关键字)string。后续用的比较多的也都是string字符串,因为这个处理起来比较方便。
 1 #include <iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     string word = "hello";
 6     cout << word << endl;
 7     cout << word.length() << endl;
 8     cout << word[1] << endl;
 9  
10     getchar();
11     return 1;
12 }

上面是一个用string表示字符串的例子,声明一个叫做word的字符串,并且初始化为单词hello,这里用的是双引号,并且可以用变量名.length() 调用获取字符串长度的方法,并且string也可以像数组一样直接使用下标来获取某一个字符,比如上面的例子就用word[1]来获取第2个字符。

3.字符串处理

常见的字符串处理是用一个循环语句来处理整个字符串,就像用循环语句处理普通数组一样,另外,其实标准库(可以理解为一个工具箱)里也有一些可以用的现成的函数,比如:
 1 #include <iostream>
 2 #include <string>
 3 using namespace std;
 4 int main()
 5 {
 6     string word = "hello ";
 7     string word2 = "world";
 8     //string字符串可以直接相加
 9     cout << word + word2 << endl;
10  
11     //string s(str):生成字符串和word一样
12     string word3(word);
13     //string s(num ,c):生成num个c字符的字符串
14     string word4(3, 'a');
15  
16     cout << "word3:" << word3 << endl;
17     cout << "word4:" << word4 << endl;
18  
19     //使用字符串.append() 方法来在字符串后添加字符串
20     word4.append("11111");
21     cout << "word4 after append:" << word4 << endl;
22  
23     getchar();
24     return 1;
25 }

上面的例子,像string [变量名]([被复制的变量])这种方法都是内置的string专属的函数,在程序上方加入#include <string>预处理文件就可以使用了。还有下面的append()方法,也是内置的函数,像这样内置的函数有很多,可以在网上搜索一下,需要的时候拿来用。

思考一下

  • 怎么证明'\0'的存在
    •  1 #include <iostream>
       2 using namespace std;
       3 int main()
       4 {
       5     string word = "hello";
       6     cout << word << endl;
       7  
       8     if (word[6] == '\0')
       9     {
      10         cout << "word[6] is \'\\0\' " << endl;
      11     }
      12  
      13     getchar();
      14     return 1;
      15 }
      点+看答案
 
 
posted @ 2020-09-28 22:43  odin1994  阅读(170)  评论(0)    收藏  举报