(1)c++字符串(string)若干初始化的方法:
string test1; //空串
string test2 = “内容”; //使用=
string test3(“内容”); //使用引用字符数组作为参数传给构造函数
string test4(test2); //用一个string初始化另一个string
string test5(test2,pos,num); //从test2中的第pos个位置开始,拷贝个数为num个字符
string test6 = test2 + “内容” + test3 //混合初始化
string test7 = test2.substr(pos,num); //从test2中的第pos个位置开始,拷贝个数为num个字符
string test8 = test2.substr(); //参数列表为空则会拷贝test2的整个对象(复制test2的简便方法)
string test9(num,ch); //拷贝num个字符型ch到test9

读者可以自己练习一下,多练就可以掌握它的初始化方法
补充:我们其实是在做acm题目的时候,对字符串做得最多的是给字符串赋值。
说到赋值,我们就不难发现对于字符型数据的输入会产生非常多的bug。于是我们就要非常熟悉scanf、 cin和 getline的用法事项才可以保证ac。如果对于这个知识点不熟悉的话,可以点击这个地址https://www.cnblogs.com/719666a/articles/9507828.html

一般处理字符串的题目,使用cin不容易出错。其他题目自己看一下题目要求,主要是空格和换行问题。
(2)string有关赋值运算以及字符串组和和分解
a> string a=“hc “,b=” nb”;
a+b就是把a与b连接在一起就是"hc nb"
b> push_back /pop_back
push_back是用来给字符串末尾加上一个字符(记住不是字符串
pop_back是弹出字符串末尾的一个字符

(3)string 中的字符替换、删除操作
a> 两个字符串交换str1 str2
str1.swap(str2)表示把字符串2的内容给字符串1,把原来字符串1的内容给字符串2。
例如:
代码:
str1=“123” str2=“456”
str1.swap(str2);
cout<<str1<<endl<<str2<<endl;
运行结果:
456
123

b> 把一个字符串的部分替换成另一个字符串
str1.replace(num,str2.length(),str2)
num表示的是str1字符串中第num+1个字符,而str2.length()表示的是str2字符串的长度(不包括‘\0’
例如:
代码:
str1=“123” str2=“456”
str1.replace(1,str2.length(),str2);
cout<<str1<<endl
运行结果:
1456

c> 把一个字符串的部分字符删去
str.erase(location,num)
特殊用法:str.erase()就是清空
location表示的是开始删的位置(第location+1个字符)
num表示的是删的字符数量
例如:
代码:
str1=“123”
str1.erase(1,2);
cout<<str1<<endl;
str1.erase()
cout<<str1<<endl;
运行结果:
1

从第二个字符开始(1(location)+1),然后删除两个字符(num)