string基本字符系列容器

Posted 糖小俊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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基本字符系列容器的主要内容,如果未能解决你的问题,请参考以下文章

string容器

TypeScript系列教程13String 字符串对象的基本使用

TypeScript系列教程13String 字符串对象的基本使用

2_STL容器

C++提高编程STL-string容器

如何以编程方式从片段内部设置ViewPager选项卡?