感觉string可能用处不大,毕竟char数组就可以搞定
#include<bits/stdc++.h>
using namespace std;
int main()
{
//1.string的初始化
// char cs1[100]="adas";
// string s0;
// s0="hello asdaff"; //给s0赋初值
// string s1(s0); //调用复制构造函数生成s1,s1为s0的复制品
// cout<<s1<<endl;
// string s2(s0,3); //将s0内开始为位置为3的部分当做s2的初值
// cout<<s2<<endl;
// string s3(s0,3,4); //将s0内开始为位置3长度顶多为4的部分当做s3的初值
// cout<<s3<<endl;
//
// string s4(cs1); //将char字符串作为s4的初值
// cout<<s4<<endl;
// string s5(cs1,3); //将char字符串前3个字符作为s5的初值
// cout<<s5<<endl;
// string s6(5,'A'); //生成一个字符串,包含5个‘A’字符
// cout<<s6<<endl;
// string s7(s0.begin(),s0.begin()+3); //以s0的区间[0,3)内的字符作为初值
// cout<<s7<<endl;
//2.常用的方法
char p[100]="adf";
string s1;
s1="asd"; //直接赋值
s1=p; //用字符指针赋值
s1=s1+'1'; //在尾部添加一个字符
string s2;
s2=s2+s1; //在尾部添加一个字符串
s2=s2.append(s1); //在尾部添加一个字符串
cout<<s2<<endl;
s2.insert(s2.begin()+2,'2'); //在某一位置插入字符
cout<<s2<<endl;
s2.erase(s2.begin()); //删除某一个元素
s2.erase(s2.begin(),s2.end()-1); //删除区间内的元素
cout<<s2<<endl;
cout<<s2.length()<<" "<<s2.size()<<endl; //字符串的长度
cout<<s1<<endl;
int a=1,b=2;
s1.replace(a,b,"abc"); //在位置a处替换原字符串中长度为b的字符串
cout<<s1<<endl;
int pos=s1.find("bc"); //寻找s1中的子串,并返回下标
if(pos<0)//或者(pos==string::npos)
{
cout<<"not found"<<endl;
}
else
{
cout<<pos<<" "<<"found"<<endl;
}
string s3="1234546";
reverse(s3.begin(),s3.end()); //reverse反向排列
sort(s3.begin(),s3.end()); //排序
cout<<s3<<endl;
int num=count(s3.begin(),s3.end(),'1'); //统计某个字符的个数
cout<<num<<endl;
int sum=s3.compare("asd"); //字符串进行比较,s3大返回1,s3小返回-1,相等返回0
cout<<sum<<endl;
return 0;
}