string基本字符系列容器
阿新 • • 發佈:2017-07-06
相互 文件 tom name 轉換 con tor 輸入與輸出 string類
今天學了關於string的一些基本字符容器,下面我就摘要幾種。
一.用reverse反向排序string對象(要用#include<algorithm>頭文件)
1 #include<iostream> 2 #include<string> 3 #include<algorithm> 4 using namespace std; 5 int main() 6 { 7 string s; 8 cin>>s; 9 reverse(s.begin(),s.end()); 10 cout<<s<<endl;11 return 0; 12 }
二.string對象作為vector元素(類似於字符串數組)
1 #include<iostream> 2 #include<string> 3 #include<vector> 4 #include<algorithm> 5 using namespace std; 6 int main() 7 { 8 vector<string> v; 9 v.push_back("Jack"); 10 v.push_back("Mike"); 11 v.push_back("Tom"); 12 cout<<v[0]<<endl; 13 cout<<v[1]<<endl; 14 cout<<v[2]<<endl; //將Jack,Mike,Tom分別標記到數組中,分別為v[0],v[1],v[2],數組元素從零開始標記; 15 cout<<v[0][0]<<endl; //表示數組中第0個元素中第0個字母,如下: 16 cout<<v[1][0]<<endl; //0 1 2 3 17 cout<<v[2].length()<<endl; //J a c k 18 return 0; 19 }
運行結果
Jack Mike Tom J M 3
三.string類型的數字化處理
1 #include<iostream> 2 #include<string> 3 using namespace std; 4 int main() 5 { 6 string s; //0 1 2 3 4 5 6(標號) 7 s="1234059"; //1 2 3 4 0 5 9 8 int sum=0; 9 for(int i=0;i<s.length();i++) 10 { 11 if(s[i]==‘0‘)sum+=0; 12 else if(s[i]==‘1‘)sum+=1; 13 else if(s[i]==‘2‘)sum+=2; 14 else if(s[i]==‘3‘)sum+=3; 15 else if(s[i]==‘4‘)sum+=4; 16 else if(s[i]==‘5‘)sum+=5; 17 else if(s[i]==‘6‘)sum+=6; 18 else if(s[i]==‘7‘)sum+=7; 19 else if(s[i]==‘8‘)sum+=8; 20 else if(s[i]==‘9‘)sum+=9; 21 } 22 cout<<sum<<endl; 23 return 0; 24 }
運行結果
24
四.string對象與字符數組相互操作(字符數組與string對象的輸入與輸出)
1 #include<iostream> 2 #include<string> 3 #include<stdio.h> 4 using namespace std; 5 int main() 6 { 7 string s; 8 char ss[100]; //輸入字符串到字符數組中 9 scanf("%s",&ss); //字符數組賦值到字符串對象 10 s=ss; 11 printf(s.c_str()); //用printf輸出字符串對象,要采用c_str()方法 12 cout<<endl; 13 printf("%s",ss); //用printf輸出字符串數組 14 cout<<endl; 15 cout<<s<<endl; //輸出字符串對象 16 cout<<ss<<endl; //輸出字符數組 17 return 0; 18 }
運行結果
abc123
abc123
abc123
abc123
abc123
五.string對象與sscanf函數(c語言中,sscanf函數可以把一個字符串按你需要的方式分離出子串,甚至是數字)
1 #include<string> 2 #include<stdio.h> 3 #include<iostream> 4 using namespace std; 5 int main() 6 { 7 string s1,s2,s3; 8 char sa[100],sb[100],sc[100]; 9 sscanf("abc 123 pc","%s %s %s",sa,sb,sc); //將字符串分離成子串,分隔符為空格 10 s1=sa; 11 s2=sb; 12 s3=sc; 13 cout<<s1<<" "<<s2<<" "<<s3<<endl; 14 int a,b,c; 15 sscanf("1 2 3","%d %d %d",&a,&b,&c); //將字符串分離成數字,分隔符為空格;當用到數字的時候,跟scanf一樣,它要傳指針地址; 16 cout<<a<<" "<<b<<" "<<c<<endl; 17 int x,y,z; 18 sscanf("4,5$6","%d,%d$%d",&x,&y,&z); //分隔符為","和"$"; 19 cout<<x<<" "<<y<<" "<<z<<endl; 20 return 0; 21 }
運行結果
abc 123 pc 1 2 3 4 5 6
六.string對象與數值相互轉換
1 #include<iostream> 2 #include<string> 3 #include<sstream> 4 #include<stdio.h> 5 using namespace std; 6 string convertToString(double x) //converToString與ToString的區別(c++方法:將數值轉換為string) 7 { 8 ostringstream o; 9 if(o<<x) 10 return o.str(); 11 return "conversion error"; 12 } 13 double converFromString(const string &s) //c++方法:將string轉換成數值 14 { 15 istringstream i(s); 16 double x; 17 if(i>>x) 18 return x; 19 return 0.0; 20 } 21 int main() 22 { 23 char b[10]; //將數值轉換成string的第一種方法:c方法 24 string a; 25 sprintf(b,"%d",1975); 26 a=b; 27 cout<<a<<endl; 28 string cc=convertToString(1976); //將數值轉換成string的第二種方法:c++方法 29 cout<<cc<<endl; 30 string dd="2006"; //將string轉換成數值的方法:c++方法 31 int p=converFromString(dd)+2; 32 cout<<p<<endl; 33 return 0; 34 }
運行結果
1975 1976 2008
string基本字符系列容器