字符串指存储在内存空间的连续字节中的一系列字符。C++中的字符串分为两种形式:C风格的字符串、C++string类型的字符串。
C风格的字符串的头文件为#include<cstring>,默认以'\0'结束,在存储时不要忘了'\0'。字符串的定义形式如下。
●字符数组:char a[8]={'v','e','r','y','g','o','o','d'}。
●字符串:char a[8]={'a','b','c','d','e','f','g','\0'}。
还有另一种字符串定义形式,在初始化字符串时既可以带长度,也可以省略长度。
●字符串:char a[8]="abcdefg"。
●字符串:char a[]="afsdjkl;sd"。
字符数组或字符串的长度测量函数为sizeof()、strlen()。
●sizeof():返回所占内存空间的字节数。由于需要在编译时计算,因此sizeof不能用于返回动态分配的内存空间大小。
●strlen():返回所占内存空间的字节数。
可以通过cin、cin.getline()和cin.get()输入C风格的字符串。
●cin:读取一个字符串,遇到空格、制表符、换行符则结束,换行符被保留在输入序列中。
●cin.getline():读取一行,遇到分隔符则结束(默认为换行符),丢弃换行符。
●cin.get():读取一行,遇到分隔符则结束(默认为换行符),换行符被保留在输入序列中。
cin.getline()有三个参数s、n和delim,其中:s表示字符数组;n表示读取字符串的最大长度(包括最后的空字符'\0'),若输入的行超出这个长度,超出的字符就会在下一次读取时被继续处理;delim是字符类型的变量,表示行结束的分隔符(默认是换行符'\n')。cin.get()与cin.getline()的用法相同,区别是cin.getline()会丢弃换行符。
注意 使用cin和cin.get()后会将换行符保留在输入序列中,解决方法为再调用一次cin.get()或cin.ignore()。连续使用cin输入无影响,因为使用cin输入时会自动跳过换行符。
C++string类型的字符串的长度没有限制,其头文件为#include<string>。C++中的string类型隐藏了字符串的数组性质,使用户可以像处理普通变量一样处理字符串。
注意
●可以使用C风格的字符串初始化string类型的字符串。
●可以使用cin输入并将输入的内容存储在string类型的字符串中。
●可以使用cout输出string类型的字符串。
●string类型的字符串没有'\0'的概念。
●char类型的数组使用了一组用于存储一个字符串的存储单元,而string变量使用了一个表示字符串的实体。
string类型的字符串的长度测量函数有.length()、.size()。
可以通过cin和getline()输入string类型的字符串。getline()有三个参数,即is、str和delim:is是输入流对象,一般为cin;str是对string类型的变量的引用,为string类型,可以读入任意长度的字符串;delim表示行结束时的分隔符(默认是'\n')。
训练19(P5015) :统计在作文的标题中有多少个字符。在标题中可能有大、小写英文字母,以及数字、空格和换行符。在统计字符数时,空格和换行符不计算在内。