string类的初始化方法:
string s1="jasj";
string s2("dsj");
string s3=s1;
string s4(10,'s');//s4输出结果为10个s,即"ssssssssss"
C++中的string类自带了一套API函数,有无参构造函数,有参构造函数,拷贝构造函数。
string的遍历:
void str()
{
string a="abcd123";
//通过数组的方式遍历
for(int i=0;i<a.length();i++)
{
cout<<a[i]<<" "; //该种方式时,出现错误会导致程序中断,而不会向外抛出异常
}
cout<<endl;
//通过迭代器遍历
for(string::iterator it = a.begin();it!=a.end();it++)
{
cout<<*it<<" ";
}
cout<<endl;
try{
for(int i=0;i<a.length()+3;i++)
{
cout<<a.at(i)<<" "; //该语法可以抛异常
}
}catch(...){
cout<<"异常"<<endl;
}
}
字符指针和string的转换:
void str1()
{
string s="qwiwei";
//string类型转换成字符指针
printf("s:%s",s.c_str());
char buf[128]={0};
s.copy(buf,4,0);//注意:这里的copy只负责copy字符,不会在末尾追加'\0',所以需要自己在结尾追加字符串,或者buf初始化为0
buf[4]='\0';
cout<<buf<<endl;
}
字符串的连接:
void str2()
{
string s1="123";
string s2="456";
s1=s1+s2;
cout<<s1<<endl;
string s3="789";
string s4="101213";
s3.append(s4); //连接s4
cout<<s3<<endl;
}
字符串的查找和替换
void str3()
{
string s="sss123 sss456 sss789";
//第一次出现123的下标
int index = s.find("123",0);
cout<<index<<endl;
//出现sss的次数,每一次出现sss的下标
int offindex = s.find("sss",0);
while(offindex!=string::npos)
{
cout<<offindex<<endl;
offindex+=1;
offindex = s.find("sss",offindex);
}
//替换,将sss小写换成大写SSS
int offindex1 = s.find("sss",0);
while(offindex1!=string::npos)
{
cout<<offindex1<<endl;
s.replace(offindex1,3,"SSS");
offindex1+=1;
offindex1 = s.find("sss",offindex1);
}
cout<<s<<endl;
}
字符串的删除和插入:
void str4()
{
string s="lassdflldjs";
string::iterator it = find(s.begin(),s.end(),'l');
if(it!=s.end())
{
s.erase(it);
}
cout<<"s:"<<s<<endl;
//删除整个字符串
s.erase(s.begin(),s.end());
//插入
string s1="wjksd";
s1.insert(0,"aaa");
cout<<"s1:"<<s1<<endl;
}