#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
//字符串的构造方法
string s0="FRDHR"; //直接赋值 s0="FRDHR"
string s1 (s0); //s0复制给s1 s1="FRDHR"
string s2 (s0,1,2); //s0从1号位置开始复制2字符给s2 s2="RD"
string s3 ("NMXDHR"); //等价于直接赋值 s3="NMXDHR"
string s4 ("NMXDHR",3); //取前三个字符赋值 s4="NMX"
string s5 (10,'N'); //N复制十次 s5="NNNNNNNNNN"
//字符串的遍历
for(int i=0;i<s0.size();i++) cout<<s0[i];
cout<<endl;
//字符串的插入
s1.insert(0,s4); //在s1位置0处插入s4 s1=NMXFRDHR
s0.insert(2,s3,0,3); //在s0位置2处插入s3[0,3)范围内的字符 s0=FRNMXDHR
cout<<s1<<endl;
cout<<s0<<endl;
//字符串的删除
s0.erase(5); //从位置5处开始包括位置5全部都舍弃 s0=FRNMX
s1.erase(5,3); //从位置5开始删,删除3个 s1=NMXFR
cout<<s0<<endl;
cout<<s1<<endl;
//+号<——>字符串拼接
string s6=s4+';'+s3; //s6=NMX;NMXDHR
cout<<s6<<endl;
//字符串的比较
//按照字典排序进行比较大小,为真返回1,为假返回0
cout<< (s0<s1) <<endl; //为真返回1
//函数
//返回字符串长度
int lenth=s0.size(); //lenth=5
//查找——>若找到返回第一个字符下标,若未找到返回-1
int position=s0.find("NMX");
cout<<position<<endl; //position=2;
//可指定位置开始往后查找,即使存在多个也只会返回第一个找到的
int position2=s0.find("MX",2);
cout<<position2<<endl; //position2=3;
//复制子串
string s7=s6.substr(4,3); //从s6的位置4开始复制三个 s7=NMX
cout<<s7<<endl;
return 0;
}