A las propiedades de cadena,
cadena STL es un tipo de cadena, normalmente se utiliza para representar una cadena. Antes de utilizar la cadena, la cadena con el carbón es generalmente indicado, secuencia y Char se pueden utilizar para representar una cadena.
Hablando de las propiedades de cadena, y tendría Char Tipo de comparación de cadenas:
. 1, char es un puntero, es una clase string
cadena encapsula * char, gestión de la cadena, es un char contenedor de texto.
2, cadena encapsula un montón de método miembro de práctica
para encontrar hallazgo, copiar copiar, borrar borrar, sustituir a reemplazar, insertar INSERT
3, independientemente de la liberación de memoria y transfronteriza
carbón cadena de gestionar la memoria asignada, cada cadena de copia, por valor clase string se encarga de, no se preocupe por el valor de la cooperación transfronteriza y la copia transfronteriza y así sucesivamente.
. 4, secuencia y Char son intercambiables, cadena Char su vez proporcionada por una cadena del método c_str ().
//string转char*
string str=“abcdefg”;
const char* cstr=str.c_str();
//char*转string
char* s=“abcdefg”;
string sstr(s);
Dos, cadena de inicialización de contenedores, cosiendo, asignaciones, buscar, reemplazar, comparar, en cadenas, la inserción y eliminación
#include<iostream>
#include<string>
using namespace std;
/////////////////////// 1- inicialización
void test01() {
string s1;//调用无参构造
string s2(10, 'a');
string s3("abcdefg");
string s4(s3);//拷贝构造
cout << s1 << endl;
cout << s2 << endl;
cout << s3 << endl;
cout << s4 << endl;
}
2- asignación //////////////////////
void test02() {
string s1;
string s2("appp");
s1 = "abcdefg";
cout << s1 << endl;
s1 = s2;
cout << s1 << endl;
s1 = 'a';
cout << s1 << endl;
//成员方法 assign 进行赋值
s1.assign("jkl");
cout << s1 << endl;
}
3- ////////////////////// operación valor
void test03() {
string s1 = "abcdefg";
//重载[]操作符
for (int i = 0; i < s1.size(); ++i) {
cout << s1[i] << " ";
}
cout << endl;
//at成员函数
for (int i = 0; i < s1.size(); ++i) {
cout << s1.at(i) << " ";
}
cout << endl;
//区别:[]方式 如果访问越界,直接挂掉
// at方式 访问越界,抛出异常out_of_range;
try {
cout << s1.at(100) << endl;
}
catch(...){
cout << "越界" << endl;
}
}
4- operación de empalme /////////////////////
void test04() {
string s = "abcd";
string s2 = "1111";
s += "abcd";
s += s2;
cout << s << endl;//abcdabcd1111
string s3 = "2222";
s2.append(s3);//把s3加到s2后面
cout << s2 << endl;// 11112222
string s4 = s2 + s3;//把s3加到s2的后面
cout << s4 << endl;//111122222222
}
//////////////////// 5- Buscar y reemplazar
void test05() {
string s = "abcdefgsadasaafgddefgde";
//查找第一次出现的位置
int pos=s.find("fg");
cout << "pos:"<<pos << endl;
//查找最后一次出现的位置
pos = s.rfind("fg");
cout << "pos:" << pos << endl;
}
///////////////////// operación de sustitución
void test06() {
string s = "abcdefg";
s.replace(0, 2, "111");
cout << s << endl;
}
6- comparación de cadenas ////////////////////
void test07() {
string s1 = "abcd";
string s2 = "abce";
if (s1.compare(s2) == 0) {
cout << "字符串相等" << endl;
}
cout << "不相等" << endl;
}
////////////////// operación de 7 cuerdas subcadena
void test08() {
string s = "abcdefg";
string sub=s.substr(1, 3);
cout << sub << endl;
}
///////////////// inserción 8-string y supresión
void test09() {
string s = "abcdefg";
s.insert(3, "111");//abc111defg
cout << s << endl;
s.erase(0, 2);//c111defg
cout << s << endl;
}
yo
nt main(void) {
//test01();
//test03();
//test04();
//test05();
//test06();
//test07();
//test08();
test09();
return 0;
}