C++的string类型是C的char str[]的功能封装,操作起来更方便,且不易出错。
使用前提:
include <string>
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)