C++ String使用简要整理

来源:互联网 发布:虎门三通淘宝培训在那 编辑:程序博客网 时间:2024/06/07 01:47

声明和初始化

string s;           //声明一个string 对象string ss[10];      //声明一个string对象的数组string s1("ssss");string s2(s1);string s3s3 = 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;                 //0123456878as1.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开始搜索 

数值转换

这里写图片描述