(1)string类型的构造函数:
string s | 定义一个空的string类型(默认构造函数) |
string s(cp) | 用cp(c风格的字符串)初始化string对象 |
string s(s1) | 用string对象s1初始化s |
string s(n,’c’) | 将s初始化为’c’的n个副本 |
string s(cp,n) | 将c风格字符串中前n个字符初始化s |
string s(s1,pos) | s被初始化为从s1开始到末尾的字符 |
string s(s1,pos,len) | 将s初始化为从s1下标pos的len个字符,如果pos>s1.size(),操作为定义,无论len有多长,最多只能复制s1.size()-pos个字符 |
string s=s1 | 复制构造函数(string对象) |
string s=cp | 复制构造函数(c风格字符串) |
(2)string对象的读写:
string对象可以通过cout可以输出,通过cin和getline输入;cin和getline的区别:
1) cin读取并忽略开头的所有空白字符(空格、换行符、制表符),读取字符直到遇到空白字符,读取终止;
2) getline(cin,line)将istream参数作为返回值,getline并不忽略开头的换行符,读取输入的下一行,遇到换行符结束,但不保存换行符,如果第一个字符是换行符,结果为空字符串;
(3)string::size_type:
size()操作返回类型,该定义与unsignedint或者unsigned long有相同的含义,根据具体长度决定,所以程序员一般将返回类型赋值于string::size_type,这样避免越界或者负数的产生。
(4)string类型是字符的容器,也是顺序容器的一种,因此支持迭代器操作;
(5)string类型支持capacity和reserve操作,也就是容器的自增长操作;
(6)string不支持以栈的形式操纵容器,因此它不支持front、back、pop_back、push_front、pop_front操作。
(7)string对象支持与顺序容器共有的插入、删除、替换、取大小操作;
(8)string对象一些常用的特有操作:
s.substr(pos,n) | 返回从下标pos开始的n个字符串 |
s.substr(pos) | 返回从下标pos开始到s末尾的所有字符串 |
s.substr() | 返回s的副本 |
s.append(args) | 将args串接到s后面,返回s的引用 |
s.replace(pos,len,args) | 删除s从pos开始的len个字符,并用args替换之,返回s的引用,不要求删除长度与插入长度相同 |
s.replace(b,e,args) | 删除s中由迭代器b和e标记范围的字符,并用args替换之,返回s的引用,不要求删除长度与插入长度相同 |
上述中,args所有可能的表示如下:
s | 另外一个string对象 |
s,pos,len | 从s下标pos开始的n个字符 |
cp | Cp指向的C语言风格的字符串 |
Cp,len | Cp指向的c语言风格字符串的前len个字符 |
n,c | 字符c的n个副本 |
b,e | b和e迭代器指向的元素 |
(9)string类型的查找函数:
String类型的查找操作全部返回string::size_type(找到匹配,是其相应的位置)类型或者string::npos(没有找到匹配)
s.find(args) | 查找args在s中的第一次出现 |
s.rfind(args) | 查找args在s中的最后一次出现 |
s.find_first_of(args) | 查找args中任意字符在s中的第一次出现 |
s.find_last_of(args) | 查找args中任意字符在s中的最后一次出现 |
s.find_first_not_of(args) | 查找第一个不属于args的字符 |
s.find_last_not_of(args) | 查找最后一个不属于args的字符 |
以上args所有可能情况如下:
c,pos | 从下标pos开始查找字符c |
s1,pos | 从下标pos开始查找s1 |
cp,pos | 从下标pos开始查找c风格字符串cp |
cp,pos,n | 从下标pos开始查找c风格字符串cp的前n个字符 |
(10)string类型字符串的链接操作“+”操作符左右必须至少有一个string类型:
string s1=”hello”+”nihao” 错误
string s1=”hello”+s2 正确
string s1=s2+”hello”+”nihao” 正确
string s1=“hello”+”nihao”+s2 错误
(11)string类型提供一个名为c_str的成员函数,可以提取string类型中的c风格字符串,该函数返回的指针指向const char类型的数组,必须将其赋值给const char类型的指针或者数组:
String str(“hello”);
Char *cr1=str.c_str(); 错误
Const char *cr2=str.c_str(); 正确