wenbao与string

 

string容器

 

输入一行,包括空格(相当于gets)

1 #include <iostream>
2 #include <string>
3 #include <sstream>
4 using namespace std;
5 int main(){
6     string str;
7     getline(cin,str);
8     cout<<str<<endl;
9 }

 

查找(指定位置的查找)转化

 1 #include <iostream>
 2 #include <string>
 3 #include <sstream>
 4 using namespace std;
 5 int main(){
 6     string s;
 7     stringstream ss;
 8     int n, i, sum, a;
 9     cin >> n;
10     getline(cin, s); // 获取换行
11     for (i=0; i<n; i++){
12         getline(cin, s);
13         ss.clear();
14         ss.str(s);
15         sum=0;
16         while (1){
17             ss >> a; //逐个获取
18             if ( ss.fail() ) break; //s.fail 字符串结束
19             sum+=a;
20         }
21     cout << sum << endl;
22     }
23     string str = "aaaaddddssdfsasdf";
24     int pos = str.find("ssdf", 3);       //用if(pos == string::npos) 用来判断是否找到子串。
25     if(pos != str.npos) cout<<pos<<endl;
26     string str2 = str.substr(pos, 5);
27     cout<<str2<<endl;
28 }

 

 转化2

 1 #include <iostream>
 2 #include <string>
 3 #include <sstream>
 4 using namespace std;
 5 int main(){
 6     string s;
 7     int n;
 8     cin>>s;
 9     stringstream ss;  //stringstream ss(s);
10     ss << s;
11     cout<<ss.str()<<endl;
12     ss >> n;
13     cout<<n<<endl;
14     ss.str("");//清空stream
15     cout<<ss.str()<<endl;
16     
17     string line,word[10];
18     int x=0;
19     while(getline(cin,line)){
20         stringstream stream(line);
21         cout<<stream.str()<<endl; // 输出stream
22         while(stream>>word[x]) x++;
23         for(int i = 0; i < x; i++)
24         cout<<word[i]<<endl;
25     }
26 }

 

 反转

reverse 在原字符串上面反转

assign 反转到别的字符串(当然也可以复制),万能的下标(str.begin()+n,str.begin()+m)

 1 #include <iostream>
 2 #include <algorithm>
 3 #include <string>
 4 using namespace std;
 5 int main(){
 6     freopen("in.txt", "r", stdin);
 7     freopen("out.txt", "w", stdout);
 8     string str,str2;
 9     cin>>str;
10     str2.assign (str.rbegin(),str.rend());
11     cout<<str2<<endl;
12     cout<<str<<endl;
13     reverse(str.begin(),str.end());
14     cout<<str<<endl;
15 }
16 
17 输入:    asdfg
18 输出:    gfdsa
19          asdfg
20          gfdsa

 

 

 1 #include <iostream>
 2 #include <stdio.h>
 3 #include <string>
 4 #include <algorithm>
 5 #include <vector>
 6 using namespace std;
 7 int main(){
 8     //string 与 char 之间的互换
 9     string str;
10     char ss[100];
11     scanf("%s",ss);
12     str = ss;
13     printf(str.c_str());
14     cout<<endl;
15     printf("%s\n",ss);
16     cout<<str<<endl;
17     cout<<ss<<endl;
18 
19     //string 与 vector的结合,相当于二维数组
20     vector <string> v;
21     v.push_back("Jack");
22     v.push_back("Mike");
23     v.push_back("Tom");
24     cout<<v[0]<<endl;
25     cout<<v[1]<<endl;
26     cout<<v[2]<<endl;
27 
28     string s;
29     s="12345abcde";
30     cout<<s<<endl;
31 
32     //反向排序,头文件<algorithm>
33     reverse(s.begin(),s.end());
34     cout<<s<<endl;
35 
36     //排序
37     sort(s.begin(),s.end());
38     cout<<s<<endl;
39 
40     //定义迭代器
41     string::iterator it;
42 
43     //s与”1234“比较,相等返回0,小于返回-1,大于返回大于个数
44     cout<<s.compare("1234")<<endl;
45 
46     //查找第一个字符‘1’,返回下标值
47     cout<<s.find('1')<<endl;
48 
49     //查找第一个子串“1“,返回下标值
50     cout<<s.find("1")<<endl;
51 
52     //查找第一个子串”abc“,返回下标值
53     cout<<s.find("abc")<<endl;
54 
55     //查找第一个子串”abh“,查不到返回4294967295==(2^32)-1;
56     //18446744073709551615==(2^16)-1;
57     cout<<s.find("ah")<<endl;
58 
59     it=s.begin();
60 
61     //从第三个开始,将连续的3个字符替换为“good”
62     //即将“45a”替换为“good”
63     s.replace(3,3,"good");
64     cout<<s<<endl;
65 
66     //把字符'p'插入到1个字符前
67     s.insert(it+1,'p');
68     cout<<endl;
69 
70     //删除第三个元素
71     s.erase(it+3);
72     cout<<s<<endl;
73 
74     s.erase(it,it+3);
75     cout<<s<<endl;
76 
77     s="";
78     cout<<s<<endl;
79     cout<<s.length()<<endl;
80     
81     return 0;
82 }

 

 

string find

 1 #include <iostream>
 2 #include <cmath>
 3 using namespace std;
 4 int main()
 5 {
 6     string str;
 7     cin>>str;
 8     int x=str.find("AB"),y=str.find("BA");
 9     if((x!=str.npos&&str.find("BA",x+2)!=str.npos)||y!=str.npos&&str.find("AB",y+2)!=str.npos){
10         cout<<"YES"<<endl;
11         return 0;
12     }
13     cout<<"NO"<<endl;
14 }

 

 substr(子串截取函数)

 1 #include <iostream>
 2 #include <string>
 3 using namespace std;
 4 int main(){
 5     string str;
 6     cin >> str;
 7     string str1 = str.substr(0, 3), str2 = str.substr(5, 8);
 8     cout<<str1<<"**"<<str2<<endl;
 9     return 0;
10 }

 

 

 

只有不断学习才能进步!

 

posted @ 2018-04-14 13:45  wenbao  阅读(144)  评论(0编辑  收藏  举报