#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
#include<sstream>
using namespace std;
/*将数值转换为string*/
string convertToString(double x){
ostringstream o;
if(o<<x)
return o.str();
return "conversion error";
}
/*string转换为数值*/
double convertFromString(const string &s){
istringstream i(s);
double x;
if(i>>x)
return x;
return 0.0;
}
int main()
{
/*创建string对象*/
string s;
cout<<s.length()<<endl;
/*给string对象赋值*/
string s1;
s1="hello,C++STL.";
cout<<s1<<endl;
/*把字符指针赋给一个字符串对象*/
string s2;
char ss[5000];
scanf("%s",&ss);
s2=ss;
cout<<s2<<endl;
/*从string对象尾部添加字符*/
string s3;
s3=s3+'a';
s3=s3+'b';
s3=s3+'c';
cout<<s3<<endl;
/*从string对象尾部追加字符串*/
string s4;
s4=s4+"abc";
s4=s4+"123";
cout<<s4<<endl;
/*采用append()方法*/
string s5;
s5.append("abcd");
s5.append("1234");
cout<<s5<<endl;
/*给string对象插入字符*/
string s6;
s6="123456";
string::iterator it;
it=s6.begin();
s6.insert(it+1,'p');
cout<<s6<<endl;
/*访问string对象的元素*/
cout<<s6[0]<<endl;
cout<<s6[1]-'p'<<endl;
/*删除string对象的元素*/
string::iterator it1=s6.begin();
s6.erase(it1+3);
cout<<s6<<endl;
s6.erase(it1,it1+4);
cout<<s6<<endl;
s6="";
cout<<s6.length()<<endl;
/*替换string对象的字符*/
string s7="abc123456";
s7.replace(3,3,"good");
cout<<s7<<endl;
/*搜索string对象的元素或子串*/
string s8;
s8="cat dog cat";
cout<<s8.find('c')<<endl;
cout<<s8.find("c")<<endl;
cout<<s8.find("cat")<<endl;
cout<<s8.find("dog")<<endl;
cout<<s8.find("dogc")<<endl;
/*string对象的比较*/
cout<<s8.compare("cat")<<endl;
cout<<s8.compare("cat dog cat")<<endl;
cout<<s8.compare("dog")<<endl;
/*reverse()反向排序string对象*/
string s9="123456789";
reverse(s9.begin(),s9.end());
cout<<s9<<endl;
/*string对象作为vector元素*/
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;
/*string类型的数字化处理*/
string s10;
s10="123456789";
int i;
int sum=0;
for(i=0;i<s10.length();i++){
if(s10[i]=='0')
sum+=0;
else if(s10[i]=='1')
sum+=1;
else if(s10[i]=='2')
sum+=2;
else if(s10[i]=='3')
sum+=3;
else if(s10[i]=='4')
sum+=4;
else if(s10[i]=='5')
sum+=5;
else if(s10[i]=='6')
sum+=6;
else if(s10[i]=='7')
sum+=7;
else if(s10[i]=='8')
sum+=8;
else if(s10[i]=='9')
sum+=9;
}
cout<<sum<<endl;
/*string对象与字符数组互操作*/
string s11;
char sss[100];
scanf("%s",&sss);
s11=sss;
printf(s11.c_str());
cout<<endl;
printf("%s",sss);
cout<<endl;
cout<<s11<<endl;
cout<<sss<<endl;
/*string对象与sscanf函数*/
string s12,s13,s14;
char sa[100],sb[100],sc[100];
sscanf("abc 123 pc","%s %s %s",sa,sb,sc);
s12=sa;
s13=sb;
s14=sc;
cout<<s12<<" "<<s13<<" "<<s14<<endl;
int a,b,c;
sscanf("1 2 3","%d %d %d",&a,&b,&c);
cout<<a<<" "<<b<<" "<<c<<endl;
int x,y,z;
sscanf("4,5$6","%d,%d$%d",&x,&y,&z);
cout<<x<<" "<<y<<" "<<z<<endl;
/*string对象与数值相互转换*/
char bb[10];
string aa;
sprintf(bb,"%d",1975);
aa=bb;
cout<<aa<<endl;
string cc=convertToString(1976);
cout<<cc<<endl;
string dd="2006";
int p=convertFromString(dd)+2;
cout<<p<<endl;
return 0;
}