一、C-串
1.其为字符串字面值,格式为 双引号括起来的字符序列。
2.以 全零字节 结尾,即通常说的 \0 或 ASCII值为0 ,因此,C-串的空间长度会比表面上多1。若要将C-串放入字符数组中,则数组元素的个数应至少比C-串字符数多1。
3.其类型可视为 const char * (事实上,所有字面值类型都是const的,因为它们被放在常量存储区)。
char * str = "Hello" ; //OK
int * a = 10 ; //error
4.比较C串的字典序可使用strcmp,不能直接比较如:“jion”==“jion”...
5.库函数还为C串提供了strcpy复制、strcat连接、strrev倒置、strset设置、strstr查找串、strchr查找字符的操作。它们默认在string.h的头文件中,在标准C++中,由于iostream头文件嵌套包含了它,所以程序中能省略#include<string.h>。
二、string类型
string类型支持长度可变的字符串(它处理空间占用问题是自动的,由标准库管理相关内存),需包含:
#include<string>
using std:string;
1.定义与初始化
string s1;//默认构造函数,s1为空串
string s2(s1);
string s3("value");
string s4(n,'c');//初始化s4为n个c字符的串
2.string对象的读写
可以使用cin和cout:
cin>>s;//会忽略开头的空白和再次遇到的空白及其之后
cout<<s;
另有两点注意一下:
(1) string的输入操作符可以返回所读的数据流(这和内置类型的输入操作符一样),可以使用 while(cin>>_string)来读取未知数目的string对象。
(2) 可以使用getline(cin,_string)来读取整行文本。
3.string对象的操作
-
_string.size()返回 string::size_type类型(配套类型的使用能与机器无关)的_string中的字符个数
-
_string.empty()返回true或flase
-
_string[n],下标操作,从0开始,可从string类型获取字符
-
_string1+_string2,连接字符串,还可以_string + C-串(字面值)
-
_string1 = _string2,字符串赋值
-
_string1 == _string2,判断字符串大小,注意这里是区分大小写的
-
从前往后开始匹配字符,在ASCII前的为小,后的为大
-
如果字符匹配完毕,依然相同,则按串的长短,短的为小,长的为大
-