string字符串
1.翻转字符串
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
getline(cin,s);
/*方法1.reverse搭配迭代器
reverse(s.begin(),s.end());
cout<<s;
*/
/*方法2.反着输出
for(int i=s.length()-1;i>=0;i--){
cout<<s[i];
}*/
//方法3.一半交换
for(int i=0;i<(s.length())/2;i++){
swap(s[i],s[s.length()-i-1]);
}
cout<<s;
return 0;
}
2.string遍历
(1)迭代器
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
getline(cin,s);
for(auto i=s.begin();i!=s.end();i++){
cout<<*i;
}
return 0;
}
引用可修改
3.string定义
重复字母
string a(2,'A');//产生的字符串a是AA
4.子串
substr(截取起点,截取长度);
5.整行输入(解决不能输入空格)
getline(cin,字符串名称);
6.find函数
找到返回第一次出现的起点,找不到返回-1
例1:寻找t在s中不重叠出现次数,例如s="aaaaa",t="aa",结果为2
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
getline(cin,s);
string t;
getline(cin,t);
int cnt=0;
for(int i=0;i<s.size();i++){
int a=s.find(t,i);//find函数,i表示寻找起点
if(a==-1)break;
else{
cnt++;
i=a+t.length()-1;
}
}
cout<<cnt;
return 0;
}
总结:
字符串1.find(字符串2,从哪开始找)
字符串1是在哪找,字符串2是要找的
返回值是:
如果找到范围第一次出现的位置起点
找不到返回-1