【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 }
-


浙公网安备 33010602011771号