声明和初始化
string s; //声明一个string 对象
string ss[10]; //声明一个string对象的数组
string s1("ssss");
string s2(s1);
string s3
s3 = s2; // 支持直接赋值操作
s3 = "1234"
string s4(10,'c'); //s4 = "cccccccccc"
char t[]="12345"; //s1 = "12",前两个字符
string s1(t, 2);
string tt("abcdefg");//s1 = "cdefg",第二个元素开始的字符
string s1(tt, 2);
string s1(tt, 2, 1);//s1 = "c",第二个元素开始的1个字符
字符串处理
1、子字符串substr
string s = "abcdefg";
string s2 = s.substr(1,4); //s2 = bcde, 1位置开始的4个字符
string s2 = s.substr(4); //s2 = efg, 4位置到最后的字符
2、插入字串insert
string tt("abcdefg");
string s1("7654321");
s1.insert(7, tt); //s1 = "7654321abcdef",7位置(当前)插入字串
s1.insert(7, tt, 2, 4); //s1 = "7654321cdef",插入2位置开始的4个字字符
s1.insert(7, 10, '*'); //s1 = "7654321**********",7位置(当前)插入10个星
s1.insert(s1.begin()+1, tt.begin(), tt.begin()+3); //s1.begin()+1之前插入tt.begin(),到tt.begin()+3
3、删除erase
string s1("7654321");
s1.erase(4,2); //s1="76541",删除4位置后面2个字符
string tt("01234");
tt.erase(tt.begin()); //1234删除指定位置元素
tt.erase(tt.begin(),tt.begin()+2); //234删除指定范围元素,tt.begin()+2位置不删
4、追加append,string重载了运算符,也可以用+=操作实现
string s1("a");
string tt("0123456878");
tt+=s1; //0123456878a
s1.append(tt,6,3); //后面追加str3第6个字符开始的3个字符串
str.append("my name is",5); //追加字符串形参的前5个字符
s1.append(10,'*'); //追加10个星号
s1.append(tt.begin(),tt.begin()+2);//追加范围内元素,tt.begin()+2位置不加
5、替换replace
string s1("abcdef");
string tt("0123456");
s1.replace(2,3, tt); //ab0123456f s1第2+1位置开始的3个元素被tt替换
s1.replace(2,3, tt, 1,2); // ab12f 第2+1位置开始的3个元素被tt第1+1开始的2个数替换```
6、assign赋值
string s1("abcdef");
string tt("0123456");
s1.assign(tt);
s1.assign(tt,2,3);
s1.assign(tt,2,3);
s1.assign(tt.begin(),tt.begin()+2); //左闭右开
字符串搜索
1、find,rfind函数就是找最后一个出现的匹配字符串,返回的位置仍然是从前往后数的。
string s1("abcdef");
string tt("012cde3456");
char *p="012cde3456";
//没找到返回(无符号类型)size_t类型长数string::npos,赋给int类型则为-1
int i = s1.find('abc');
size_t h = s1.find(p, 3,3);//等价于 s1.find("012cde3456", 2,3), s1.find(tt, 2,3)则出错
2、
find_first_of 和find最大的区别就是当在一个字符串str1中查找另一个字符串str2,如果str1中含有str2中的任何字符,则就会查找成功,而find则不同;
find_first_of(args) 查找args中任何一个字符第一次出现的位置
find_last_of(args) 最后一个出现的位置
find_fist_not_of(args) 查找第一个不在args中的字符
find_last_not_of 查找最后一个不在args中出现的字符
string str1("I am change");
string str2("about");
int k=str1.find_first_of(str2); //k返回的值是about这5个字符中任何一个首次在str1中出现的位置;
int find_first_of(char c, int start = 0);默认 start等于0,从start开始搜索
int find_first_not_of(char c, int start);从start开始搜索