string基本字符系列容器
使用string容器,需要#include<string>
1.创建string对象
#include<string>
#include<iostream>
using namespace std;
int main(int agrc,char* agrv[])
{
string s;
cout<<s.length()<<endl;
return 0;
}
结果:0
原因:s是一个空字符串
2.给string对象赋值
1)直接给字符串对象赋值
#include<string>
#include<iostream>
using namespace std;
int main(int agrc,char* agrv[])
{
string s;
s="hello C++STL";
cout<<s<<endl;
return 0;
}
结果:
hello C++STL
2)将字符指针赋值给一个字符串对象
#include<string>
#include<iostream>
using namespace std;
int main(int agrc,char* agrv[])
{
string s;
char ss[1000];
scanf("%s",&ss);//scanf是c语言函数,不支持string对象
s=ss;
cout<<s<<endl;
return 0;
}
3.从string对象尾部添加字符
#include<string>
#include<iostream>
using namespace std;
int main(int agrc,char*agrv[])
{
string s;
s=s+'a';
s=s+'b';
s=s+'c';
cout<<s<<endl;
return 0;
}
结果:abc
4.从string对象尾部追加元素
1)直接采用'+'
2)采用append方法
#include<string>
#include<iostream>
using namespace std;
int main(int agrc,char*agrv[])
{
string s1,s2;
s1=s1+"abc";
s1=s1+"123";
s2.append("abc");
s2.append("123");
cout<<s1<<endl;
cout<<s1<<endl;
return 0;
}
结果:abc123
5.给string类添加对象——insert()
#include<string>
#include<iostream>
using namespace std;
int main(int agrc,char*agrv[])
{
string s;
s="123456";
//迭代器的定义
string::iterator it;
it=s.begin();
s.insert(it+1,'p');
cout<<s<<endl;
return 0;
}
结果:1p23456
6.访问string对象的元素
一般采用下标方式访问string对象的元素
#include<string>
#include<iostream>
using namespace std;
int main(int agrc,char*agrv[])
{
string s;
s="abc123456";
//迭代器的定义
cout<<s[0]<<endl;
cout<<s[0]-'a'<<endl;
return 0;
}
结果;
a
0
7.删除string对象的元素
1)清空一个字符串,直接给它赋空值即可
2)使用erase()方法删除迭代器所指的元素或者是一段区域
#include<string>
#include<iostream>
using namespace std;
int main(int agrc,char*agrv[])
{
string s;
s="abc123456";
string::iterator it;
it=s.begin();
s.erase(it+3);
cout<<s<<endl;
s.erase(it,it+4);
cout<<s<<endl;
s="";
cout<<s.length()<<endl;
return 0;
}
abc23456
3456
0
8.返回string对象的长度
empty()
length()
9.替换string对象的字符
replace()
#include<string>
#include<iostream>
using namespace std;
int main(int agrc,char*agrv[])
{
string s;
s="abc123456";
s.replace(3,3,"good");//从第三个开始,将连续的3个字符替换为“good”
cout<<s<<endl;
cout<<s.length()<<endl;
return 0;
}
结果:abcgood456
10
10.搜索string对象的元素或子串
find()查找字符串中的第一个字符元素
#include<string>
#include<iostream>
using namespace std;
int main(int agrc,char*agrv[])
{
string s;
s="cat dog cat";
cout<<s.find('c')<<endl;
cout<<s.find("c")<<endl;
cout<<s.find("cat")<<endl;
cout<<s.find("dog")<<endl;
cout<<s.find("dogc")<<endl;
return 0;
}
结果:
0
0
0
4
4294967295
11.string对象的比较
compare()
12.用reverse()反向排序string对象
#include<algorithm>
代码:
#include<string>
#include<algorithm>
#include<iostream>
using namespace std;
int main(int agrc,char*agrv[])
{
string s;
s="123456789";
reverse(s.begin(),s.end());
cout<<s<<endl;
return 0;
}
结果:987654321
13.string对象作为vector元素
#include<vector>
#include<string>
#include<algorithm>
#include<iostream>
using namespace std;
int main(int agrc,char* agrv[])
{
vector<string> v;
v.push_back("Jack");
v.push_back("Mike");
v.push_back("Tom");
cout<<v[0]<<endl;
cout<<v[1]<<endl;
cout<<v[2]<<endl;
cout<<v[0][0]<<endl;
cout<<v[1][0]<<endl;
cout<<v[2].length()<<endl;
return 0;
}
结果:
Jack
Mike
Tom
J
M
3
14.string对象的数字化处理
在acm中取余花费时间长
#include<vector>
#include<string>
#include<algorithm>
#include<iostream>
using namespace std;
int main(int agrc,char* agrv[])
{
string s;
s="12345673";
int i;
int sum=0;
for(i=0;i<s.length();i++)
{
switch (s[i])
{
case '0':sum+=0; break;
case '1':sum+=1; break;
case '2':sum+=2;break;
case '3':sum+=3;break;
case '4':sum+=4;break;
case '5':sum+=5;break;
case '6':sum+=6;break;
case '7':sum+=7;break;
case '8':sum+=8;break;
case '9':sum+=9; break;
}
}
cout<<sum<<endl;
return 0;
}
15.string 与字符数组的相互操作