string
在C++编程中,string是一个很重要的类型,他提供了许多方便的功能和特性,可以是字符串处理变得更加简单高效。
string类型提供了字符串的自动内存管理,无需手动分配和释放内存。
下面是一些常用的字符串操作和函数:
输入可以用 getline(cin,str)
也可以直接用>,<,==,!=,来比较
a=str.size();
可以获取字符串长度
str.empty()判断是否为空
初始化和赋值
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a,b,f;
string c(10,'*');//初始化10个*
string d("######");
string e(c);//将c复制到e数组
a=c;//将c复制到a数组
b+=c;//将c连到b数组后面
cout<<"a "<<a<<endl<<"b "<<b<<endl<<"c "<<c<<endl;
cout<<"d "<<d<<endl<<"e "<<e<<endl;
}
运行结果
a **********
b **********
c **********
d ######
e **********
插入insert
#include<bits/stdc++.h>
using namespace std;
int main()
{
string c(10,'*');//初始化10个*
string d("hello word");
c.insert(5,"###");//在下标为五处插入###
cout<<c<<endl;
c.insert(5,d,2,3);///在下标为五处插入字符串d从2开始的3个字符
cout<<c<<endl;
c.insert(10,d,6);//在下标为十处插入字符串d从6开始的所有
cout<<c<<endl;
c.insert(2,3,'w');//在下标为2处插入 3个字符w
cout<<c<<endl;
}
运行结果
*****###*****
**llo###*****
*****llo##word#*****
**www***llo##word#*****
删除erase
#include<bits/stdc++.h>
using namespace std;
int main()
{
string d("hello word");
d.erase(2,3);//删除从2开始3个字符
cout<<d<<endl;
}
运行结果
he word
获取子字符串 substr
#include<bits/stdc++.h>
using namespace std;
int main()
{
string d("hello word"),c;
c= d.substr(2,8);//获取从2开始8个字符
cout<<c<<endl;
}
运行结果
llo word
查找find,rfind
#include<bits/stdc++.h>
using namespace std;
int main()
{
#include<bits/stdc++.h>
using namespace std;
int main()
{
string d("ABCDEFGHIJKLMN");
string::size_type a,b,c;//因为find函数返回值是size_type类型
a=d.find('B');// B在字符串中的位置
b=d.find("EFG");//EFG字符串首字符在字符串中的位置
c=d.find('W');//不存在会返回-1,也可以看作npos
if(c==-1)//或者!=npos
c=9;
cout<<a<<endl<<b<<endl<<c;
}
}
运行结果
1
4
-1
npos取值是4294967295,计算机中和-1相等
在有些情况下,可以强制用int定义a,b,c,但不是好的做法。
替换replace
#include<bits/stdc++.h>
using namespace std;
int main()
{
string d("ABCDEFGHIJKLMN");
string c("********");
d.replace(1,3,4,'*');//用四个*替换从1位置的三个字符
cout<<d<<endl;
}
运行结果
A****EFGHIJKLMN
交换 swap
#include<bits/stdc++.h>
using namespace std;
int main()
{
string d("ABCDEFGHIJKLMN");
string c("********");
swap(d,c);//用四个*替换从1位置的三个字符
cout<<d<<endl<<c<<endl;
}
运行结果
********
ABCDEFGHIJKLMN
反转
reverse(a.begin(),a.end())
字典序
sort(a.begin(),a.end())
push_back,pop_back
易错
string tt;//先定义
tt=tt+s[i-2]+s[i-1]+s[i];//再这样赋值
string tt={s[i]};