string 的定义
string类的定义
定义string类的方式跟基本数据类型相同,只需要在string后跟上变量名即可
string str;
如果要初始化,可以直接给string类进行赋值
string str="hello";
string类的访问
直接通过下标访问
string str="abcdef";
for(int i=0;i<str.length();i++){
cout<<str[i];
}
如果要读入和输出字符串只能用cin和cout
cin>>str;
cout<<str;
如果读入带有空格等等的字符串
getline(cin,str);
如果要用printf输出string类型
printf("%s",str.c_str());
通过迭代器访问
for(string::iterator it=str.begin();it!=str.end();it++){
cout<<*it;
}
string和vector 一样,支持直接对迭代器进行加减某个字数str.begin()+i
string类可以直接进行加法,可以将两个string类拼接起来
string类可以直接比较大小 是按字典序排的
length() size() 返回string的长度
string str="abcdef";
cout<<str.length()<<endl;//6
cout<<str.size()<<endl;//6
insert()
insert(pos,string) 在pos号位置插入字符串string
string str1="abc";
string str2="ddd";
str1.insert(1,str2);
cout<<str1<<endl;//adddbc
insert(it,it2,it3) it为原字符串欲插入的位置 it2和it3为待插字符串的首位
//insert(it,it2,it3) it为原字符串欲插入的位置 it2和it3为待插字符串的首位迭代器
string str3="abcde";
string str4="fghi";
str3.insert(str3.begin()+3,str4.begin(),str4.begin()+2);
cout<<str3<<endl;//abcfgde
erase()
erase() 有两种用法一种是删除单个元素另一种是删除一个区间的所有元素
删除单个元素 erase(it) 用于删除单个元素 it为要删除的元素的迭代器
// 删除单个元素 erase(it) 用于删除单个元素 it为要删除的元素的迭代器
string s1="abcdef";
s1.erase(s1.begin()+3);
cout<<s1<<endl;//abcef
删除一个区间内的所有元素
str.erase(first,last) first为要删除区间的其实迭代器,last为需要删除的末尾迭代器的下一个地址
str.erase(pos,length) pos为要删除的起始地址 length为要删除的字符个数
//删除一个区间内的所有元素
//str.erase(first,last) first为要删除区间的其实迭代器,last为需要删除的末尾迭代器的下一个地址
string s2="abcdef";
s2.erase(s2.begin(),s2.begin()+4);
cout<<s2<<endl;//ef
//str.erase(pos,length) pos为要删除的起始地址 length为要删除的字符个数
string s3="abcdef";
s3.erase(2,4);
cout<<s3<<endl;//ab
clear()清空string中的数据
s3.clear();
cout<<s3<<endl;
substr()
substr(pos,len)返回从pos号位开始,长度为len的子串
// substr(pos,len)返回从pos号位开始,长度为len的子串
string s4="abcdef";
string s5=s4.substr(3,3);
cout<<s5<<endl;//def
find()
str.find(str2) 当str2是str的子串时,返回其在str中第一次出现的位置,如果str2不是str的子串返回-1
str.find(str2,pos)从str的pos号位开始匹配str2
//str.find(str2) 当str2是str的子串时,返回其在str中第一次出现的位置,如果str2不是str的子串返回-1
string ss1="abcdefabc";
string ss2="abc";
int pos=ss1.find(ss2);
cout<<pos<<endl;//0
//str.find(str2,pos)从str的pos号位开始匹配str2
int pos1=ss1.find(ss2,3);
cout<<pos1<<endl;//6
int pos2=ss1.find("xyz");
cout<<pos2<<endl;//-1
replace()
str.replace(pos,len,str2) 把str从pos号位开始,长度为len的子串替换为str2
str.replace(it1,it2,str2) 把str的迭代器it1,it2范围的子串替换为str2