C++ String使用简要整理

声明和初始化

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开始搜索 

数值转换

这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值