创建和初始化
头文件<string>
基本方法
string s1;
string s2("Hello");
string s3(s2);
string s4(s2,0,3);
string s5 = "Hi";
string s6 = s2+"Hi";
- s4 第一个参数是string类型,第二个和第三个分别表示偏移量和计数量,即从第0个字符开始连续读3个字符
- s5单一赋值,可直接把char型数组赋值给s5
- 类似s6这样可以,但是“Hi”+s2便无法通过,等号右边第一项必须是string类型,不能是char型
迭代器创建方法
string s1 = "Hello";
string s2(s1.begin(),s1.end());
string s3(s1.begin()+1,s1.begin()+3); //el
字符串操作
插入操作
string s = "do";
string s1 = s.insert(0, "How ");
string s2 = s.append(" you ");
string s3 = s + "do?";
- s1 How do
- s2 How do you
- s3 How do you do
替换操作
string s = "What's your name?";
s.replace(0, 2, "tt");
- s ttat’s your name?
- replace函数的第一个参数是删除字符串的起始位置,第二个参数是删除字符的个数,第三个是替换字符串的值
字符串查询
- string::npos 是string类中的一个成员变量,查询字符串时没有符合条件的结果值则返回该值
- find函数:在一个字符串中查找指定字符或字符串,找到则返回首次匹配的开始位置,如果没找到返回string::npos。参数有两个,一个是待查询的字符串,一个是查询起始位置。
- find_first_of函数:在一个字符串中查找返回值是,第一个与指定字符串中任何字符匹配的字符位置;没找到返回npos。一般有两个参数,一个是待查询的字符串,一个是查询的起始位置,默认是0;
- find_last_of函数:在一个字符串中进行查找,返回最后一个与指定字符创中任何字符匹配的字符位置;其他与find_first_of函数相同;
- find_first_not_of函数:在一个字符创中进行查找,返回第一个与指定字符串中任何字符都不匹配的元素位置;如果没有找到匹配内容返回string::npos;两个参数,一个是待查询的字符串,一个是查询的起始位置,默认为0;
- find_last_not_of函数:在一个字符创中进行查找,返回下标值最大的与指定字符串中任何字符都不匹配的元素位置;如果没有找到匹配内容返回string::npos;两个参数,一个是待查询的字符串,一个是查询的起始位置,默认为0;
- rfind函数:对一个串从尾至头查找指定的字符或字符串,如果找到,就返回首次匹配的开始位置,否则返回string::npos。一般有两个参数,一个是待查询的字符串,一个是查询的起始位置。默认起始位置是串尾。
从字符串中删除字符
在字符串中删除字符主要用erase函数,有两个迭代器输入参数,之间表示的字符将被删除掉。
string s = "How are you?";
s.erase(s.begin(),s.begin()+4);
最后s为 “are you?”
字符串比较
使用非成员的重载运算符函数即可
string s1 = "this";
string s2 = "that";
根据每一个位置字符的ASCII码大小进行比较,s1>s2