生成字符串
string str1; //生成空字符串
string str2("123456789"); //生成“123456789”的复制品
string str5(5,'1'); //结果为str5="11111" 这里的第二个参数只能写一个字符
字符串插入
str.push_back('a'); //尾插一个字符,但这个不常用一般用下边这个
str+="a";
str.insert(s.begin()+i,'a'); //在字符串第i个下标处插入一个新字符a 第二个参数只能是一个字符
一般插入元素都用下边这个
str.insert(pos,"string"); //在指定的位置pos插入字符串;在下标为pos的位置处插入字符串
string s1("123456789");
//常用字符串插入1
s1+="hello";
string s2=s1;
//常用字符串插入2
s1.insert(2,"a");
cout<<s2<<endl<<s1<<endl;
//123456789hello
//12a3456789hello
字符串删除
一般都用这个:
string str1("123456789");
s1.erase(5,3); //从第5个下标的位置(包括第5个下标处)开始,往后依次删除3个位置的值
string s1("123456789");
//s1.erase(s1.begin()+2);
//删除下标为2的字符 结果为:12456789
//s1.erase(1);
//删除下标为1,以及之后的所有值 结果为:1
//s1.erase(s1.begin()+1,s1.end()-2);
//结果为:189 //都是闭区间
//最常用
s1.erase(5,3);
//从第二个位置开始 删除下标为5以及后边3个位置
//结果:123459 删除678
cout<<s1<<endl;
转置字符串
reverse(s1.begin(),s1.end());
#include<bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
signed main(){
string s1("123456789");
reverse(s1.begin(),s1.end());
cout<<s1;//987654321
return 0;
}
字符串查找
string s("dog bird chicken bird cat");
//字符串查找------找到后返回首字母在字符串中的下标
1.查找一个字符串
if(s.find("chicken")!=-1) //未查找到字符串的话,返回-1
cout<<s.find("chicken")<<endl; //结果是:9
2.从下标为6开始找字符'i',返回找到的第一个i的下标
cout<<s.find('i',6)<<endl; //结果是:11
字符串截取
string s1("0123456789");
string s1=s1.substr(2,5);
//结果:23456 ------ 参数2表示从下标为2的元素开始截取,参数5表示截取字符串的长度
tolower() //把字符转化为小写
toupper() //把字符转化为大写
字符串应用例题
在字符串b中统计单词a的个数
#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
signed main(){
string a,b;
// cin>>a;//读到空格时自动认为是字符串结束标志'\0'
getline(cin,a);
getline(cin,b);
//将字符串a,b都转换成小写
for(int i=0;i<a.size();i++){
a[i]=tolower(a[i]);
}
for(int i=0;i<b.size();i++){
b[i]=tolower(b[i]);
}
//这样保证在字符串中查找的是一个单词,而不是单词的一部分
a=' '+a+' ';
b=' '+b+' ';
if(b.find(a)==-1){
cout<<-1<<endl;
}
else{
//查找到一个之后,接下来 从查找到之后的下标 开始接着查找并计数
int count=0;
int tem=b.find(a);
while(tem!=-1){
tem=b.find(a,tem+1);
count++;
}
cout<<count<<' '<<b.find(a)<<endl;
}
return 0;
}
查找1-n中所有数字各个位数含有多少个x
#include<bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
const int N=2e5+10,M=1e3+10;
int n,x;
int t=0;
signed main()
{
cin>>n>>x;
for(int i=1;i<=n;i++)
{
string s=to_string(i);
//依次将数字以字符串的形式存储,方便取出数字的每一位数
for(int j=0;j<s.size();j++)
{
//依次取出每个数字的每一位数,并进行比较判断
if(s[j]-'0'==x)
{
t++;
}
}
}
cout<<t<<endl;
return 0;
}