【C++STL库】string常用函数学习

C++的string类型是C的char str[]的功能封装,操作起来更方便,且不易出错。

使用前提:

  1. include <string>
  2. using namespace std;

1 string的定义

string str;
string str = "abcd";

2 string中内容的访问

//1. 通过下标访问
//访问字符串中的字符
for(int i=0;i<str.length();i++){
    printf("%c",str[i]); //str[i]
}
//读入和输出字符串
cin>>str;
cout<<str;
//string转换成char[]
printf("%s\n",str.c_str());   //str.c_str()
//cout与printf等价

//2. 通过迭代器访问
//定义
string::iterator it;
//访问字符串中的字符
for(string::iterator it=str.begin();it!=str.end();it++){ 
    printf("%c",*it); //也可以通过str.begin()+3的方式
}

3 string常用函数实例解析

//1. operator+= 拼接两个string
str1 += str2; //效果同str1=str1+str2

//2. compare operator 利用“字典序”规则比较string大小
if(str1 < str2) printf("ok1\n");

//3. length()/size() 返回string的长度
str.length();
str.size();

//4. insert()
//4.1 insert(pos,string) 在pos位置插入字符串string
str = "abcxyz";
str2 = "opq";
str.insert(3,str2); //abc opq xyz。opq位于第“3”个位置
//4.2 insert(it,it2,it3) it:原字符串欲插入位置;it2、it3:被插入字符串首尾迭代器,为[it2,it3)
str.insert(str.begin()+3,str2.begin(),str2.end()); //依然为abc opq xyz

//5. erase() 2种用法
//5.1 str.erase(it) 删除单个元素,it为迭代器
str.erase(str.begin()+4); //删除“4”号,例abcdefg的e
//5.2 str.erase(first,last) 删除区间元素,[first,last),first起始迭代器,last末尾迭代器的下一个地址
str.erase(str.begin()+2,str.end()-1); //删除[2,end-1)元素,例如abcdefg的cdef
//5.2 str.erase(pos,length) pos起始位置,length个数
str.erase(3,2); //从“3”开始,删除2个。例如abcdefg的de

//6. clear() 清空string
str.clear();

//7. substr(pos,len) pos位置,len长度
str.substr(0,5);

//8. string::npos
//一个unsigned_int常数。如果find()找不到则返回它。它既等于-1又等于4294967295

//9. find()
//9.1 查找str2是否是str子串,返回位置;无则返回string::npos
str.find(str2);
//9.2 从str的pos位置开始匹配
str.find(str2,pos);
//例如str.find(str2,7)

//10. replace()
//10.1 str从pos位置开始,长度len的子串替换为str2
str.replace(pos,len,str2);
//例如str.replace(10,4,str2)
//10.2 迭代器[it1,it2)的子串替换为str2
str.replace(it1,it2,str2);
//例如str.replace(str.begin(),str.begin()+5,str3)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值