Contenedor de cadenas de C ++ Xiaobai


Prefacio

Continuar hoy. Ayer, no hice nada para resumir el contenedor de vectores. Hoy vi el contenedor de cadenas hecho hace algún tiempo, y quería resumir esta parte, solo para revisar el conocimiento del contenedor de cadenas.


Uno, el concepto básico de cuerda.

1. Esencia: la
cadena es una cadena de estilo C ++ y la cadena es esencialmente una clase.

2. La diferencia entre string y char * .
Char es un puntero.
String es una clase que encapsula char *, administra esta cadena y es un contenedor de tipo char *.

3. Características
Muchos métodos de miembros están encapsulados dentro de la clase de cadena.
Por ejemplo: buscar buscar, copiar copiar, eliminar eliminar, reemplazar reemplazar, insertar insertar.
String administra la memoria asignada por char *, no se preocupe por copiar fuera de límites y valor fuera de límites, etc., es responsabilidad interna de la clase.

Dos, constructor de cadenas

1. Prototipo de constructor:

string();                       创建一个空的字符串 例如:string str;
string(const char* s);          使用字符串s初始化
string(const string& str);      使用一个string对象初始化另一个string对象
string(int n,char c);           使用n个字符c初始化

2. El ejemplo de código es el siguiente:

#include<iostream>
using namespace std;
#include<string>
//string的构造函数

/*
string();                                //创建一个空的字符串 例如:string str;
string(const char* s);                   //使字符串s初始化
string(const string& str);               //使用一个string对象初始化另一个string对象
string(int n,char c);                    //使用n个字符初始化
*/

void test01()
{
    
    
string s1;//默认构造

const char* str="hello world";
string s2(str);

cout<<"s2= "<<s2<<endl;

string s3(s2);
cout<<"s3= "<<s3<<endl;

string s4(10,'a');
cout<<"s4= "<<s4<<endl;

}

int main()
{
    
    

	test01();


system("pause");
return 0;

}

Operación de asignación de tres cadenas

1. Descripción de la función:
asignar valor a la cadena

2. Prototipo de función para asignación

string& operator=(const char* s);        char*类型字符串赋值给当前的字符串
string& operator=(const string &s);      把字符串s赋值给当前的字符串
string& operator=(char c);               字符赋值给当前的字符串
string& assign(const char *s);           把字符串s赋值给当前的字符串
string& assign(const char *s,int n);     把字符串s的前n个字符赋值给当前的字符串
string& assign(const string &s);         把字符串s赋给当前字符串
string& assign(int n,char c);            用n个字符c赋值给当前字符

3. Demostración de código

#include<iostream>
using namespace std;
#include<string>
/*
string& operator=(const char* s);            char*类型字符串 赋值给当前的字符串
string& operator=(const string &s);          把字符串s赋给当前的字符串
string& operator=(char c);                   字符赋值给当前字符串
string& assign(const char*s);                把字符串s赋值给当前的字符串
string& assign(const char*s,int n);          把字符串s的前n个字符赋值给当前的字符串
string& assign(const string &s);             把字符串s赋值给当前字符串
string& assign(int n,char c);                用n个字符c赋给当前字符串
*/


void test01()
{
    
    
string str1;         //定义一个 字符串 

str1="hello world";  //char*类型字符串 赋值给当前的字符串str1
cout<<"str1= "<<str1<<endl;

string str2;
str2=str1;//把字符串s赋给当前的字符串
cout<<"str2= "<<str2<<endl;

string str3;
str3='a';//字符赋值给当前字符串
cout<<"str3= "<<str3<<endl;

string str4;
str4.assign("hello C++");//把字符串s赋值给当前的字符串
cout<<"str4= "<<str4<<endl;

string str5;
str5.assign("hello C++",8);//把字符串s的前n个字符赋值给当前的字符串
cout<<"str5= "<<str5<<endl;

string str6;
str6.assign(str5);//把字符串s赋值给当前字符串str5d的赋值给str6
cout<<"str6= "<<str6<<endl;

string str7;
str7.assign(10,'w');// 用n个字符c赋给当前字符串
cout<<"str7= "<<str7<<endl;
}

int main()
{
    
    
	test01();

system("pause");
return 0;
}

Empalme de cuatro cuerdas

1. Descripción de la función:
realice el empalme de cuerdas al final de la cuerda

2. Prototipo de función:

string& operator+=(const char* str);            重载+=操作符
string& operator+=(const char c);               重载+=操作符
string& operator+=(const string& str);          重载+=操作符
string& append(const char *s);                  把字符串s连接到当前字符串结尾
string& append(const char *s,int n);            把字符串s的前n个字符串连接到当前字符串结尾
string& append(const string &s);operator+=const string& str)
string& append(const string &s,int pos,int n);  字符串s中从pos开始的n个字符连接到字符串结尾

3. Ejemplo de código

#include<iostream>
using namespace std;
#include<string>
//功能:实现在字符串末尾拼接字符串
//函数原型:
/*
string& operator+=(const char* str);            //重载+=操作符
string& operator+=(const char c);                 //重载+=操作符
string& operator+=(const string& str);            //重载+=操作符
string& append(const char *s);                     //把字符串s连接到当前字符串结尾
string& append(const char*s,int n);               //把字符串s的前n个字符连接到当前字符串结尾
string& append(const string &s);                  //同operator+=(const string& str)
string& append(const string &s,int pos,int n);    //字符串s中从pos开始的n个字符连接到字符串结尾
*/

void test01()
{
    
    
string str1="我";
str1+="爱学习";//重载+=操作符,对str1进行拼接
cout<<"str1= "<<str1<<endl;

str1+=":";//重载+=操作符,对str1进行拼接
cout<<"str1="<<str1<<endl;

string str2="C++ 概率论 英语 树莓派";

str1+=str2;//利用+=在str1后面加一个str2
cout<<"str1= "<<str1<<endl;

string str3="I";
str3.append("LOVE");//使用append来进行拼接在str3后拼接
cout<<"str3= "<<str3<<endl;

str3.append("study cpp",5);
cout<<"str3= "<<str3<<endl;

//str3.append(str2);

//str3.append(str2,0,3); //只截取到C++
str3.append(str2,4,6);//只截取到概率论,参数2从那个位置开始截取,参数3结束位置,若参数3小于参数2则只截取一个
//I LOVE GAME LOL DNF
cout<<"str3= "<<str3<<endl;


}
int main()
{
    
    
	test01();


system("pause");
return 0;
}

Cinco, buscar y reemplazar cadenas

1. Descripción de la función:
Buscar: buscar si la cadena especificada existe o no
Reemplazar: reemplazar la cadena en la posición especificada

2. Prototipo de función:

int find(const string& str,int pos=0) const;       查找str第一次出现位置.从pos开始查找
int find(const char* s,int pos=0) const;           查找s第一次出现位置.从pos开始查找
int find(const char* s,int pos,int n) const;       从pos位置查找s的前n个字符第一次位置
int find(const char c,int pos =0) const;           查找字符c第一次出现位置
int rfind(const string& str,int pos=npos) const;   查找str最后一次位置.从pos开始查找
int rfind(const char* s,int pos=npos) const;       查找s最后一次出现位置.从pos开始查找
int rfind(const char* s,int pos,int n) const;      从pos查找s的前n个字符最后一次位置
int rfind(const char c,int pos=0) const;           查找字符c最后一次出现位置
string& replace(int pos,int n,const string& str);  替换从pos开始n个字符为字符串str
string& replace(int pos,int n,const char* s);      替换从pos开始的n个字符为字符串s

3. Ejemplo de código

#include<iostream>
using namespace std;
#include<string>
void test01()
{
    
    
string str1="abcdefde";

int pos=str1.find("de");

if(pos==-1)
{
    
    
cout<<"未找到字符串"<<endl;
}
else
{
    
    
cout<<"找到字符串,pos= "<<pos<<endl;
}

//rfind和find区别
//rfind从右往左查找 find从左向右查找
pos=str1.rfind("de");
cout<<"pos= "<<pos<<endl;

}

//2、替换
void test02()
{
    
    
string str1="abcdef";

//从1号位置起3个字符 替换为“1111”
str1.replace(1,3,"1111");
cout<<"str1="<<str1<<endl;

}

int main()
{
    
    
	test01();
	test02();
system("pause");
return 0;
}

Comparación de seis cuerdas

1. Descripción de la función:
comparación entre cadenas

2. Método de comparación: la
comparación de cadenas se basa en la comparación del código ASCII de caracteres
= devuelve 0
> devuelve 1
< devuelve -1

3. Prototipo de función:

int compare(const string &s) const;      与字符串s比较
int compare(const char *s) const;        与字符串s比较

4. Ejemplo de código:

#include<iostream>
using namespace std;
#include<string>
//功能描述:字符串比较

void test01()
{
    
    
string str1="hello";
string str2="xello";

if(str1.compare(str2)==0)
{
    
    
cout<<"str1 等于 str2"<<endl;
}
else if(str1.compare(str2)>0)
{
    
    
cout<<"str1大于str2"<<endl;
}
else
{
    
    
cout<<"str1小于str2"<<endl;
}

}

int main()
{
    
    
	test01();

system("pause");
return 0;
}

Siete, adquisición de caracteres de cadena

1. Prototipo de función:
hay dos formas de obtener un solo carácter en una cadena

char& operator[](int n);     通过[]方式取字符
char& at(int n);             通过at方法获取字符

2. Ejemplo de demostración de código:

#include<iostream>
using namespace std;
#include<string>

void test01()
{
    
    
string str="hello";
cout<<"str"<<str<<endl;

//1、通过[]访问单个字符
for(int i=0;i< str.size();i++)
{
    
    
cout<<str[i]<<" ";
}
cout<<endl;

//2、通过at方式访问单个字符
for(int i=0;i< str.size();i++)
{
    
    
	cout<<str.at(i)<<" ";
}
cout<<endl;

//3、修改单个字符
str[0]='x';//第0号字符修改
//xello
cout<<"str= "<<str<<endl;

//xxllo
str.at(1)='x';
cout<<"str= "<<str<<endl;
}

int main()
{
    
    
test01();

system("pause");
return 0;
}

Ocho, inserción y eliminación de cadenas

1. Descripción de la función:
insertar y eliminar caracteres en una cadena

2. Prototipo de función:

string& insert(int pos,const char* s);      插入字符
string& insert(int pos,const string& str);  插入字符串
string& insert(int pos,int n,char c);       在指定位置插入n个字符c
string& erase(int pos,int n = npos);        删除从pos开始的n个字符

3. Ejemplo de código:

#include<iostream>
using namespace std;
#include<string>
void test01()
{
    
    
	string str="hello";

	//插入
	str.insert(1,"111");
	//jlllello
	cout<<"str= "<<str<<endl;

	//删除
	str.erase(1,3);
	cout<<"str= "<<str<<endl;

}

int main()
{
    
    
	test01();

	system("pause");
	return 0;

}

Nueve, subcadena de cadena

1. Descripción de la función:
obtenga la cadena deseada de la cadena

2. Prototipo de función:

string substr(int pos=0,int n=npos) const;    返回由pos开始的n个字符组成的字符串

3. Ejemplo de código:

#include<iostream>
using namespace std;
#include<string>

//string字串
void test01()
{
    
    
string str ="abcdef";
string subStr=str.substr(1,3);//str.来点出来

cout<<"sunStr= "<<subStr<<endl;

}

//使用操作
void test02()
{
    
    
string email="[email protected]";
//从邮件地址中 获取 用户信息

int pos=email.find("@");//8
cout<<pos<<endl;

string usrName=email.substr(0,pos);

cout<<usrName<<endl;

}
int main()
{
    
    
	test01();


system("pause");
return 0;
}

para resumir

Lo anterior es el conocimiento del contenedor de cadenas que vi, el concepto básico de cadena, constructor de cadena, operación de asignación de cadena, empalme de cadena de cadena, búsqueda y reemplazo de cadena, comparación de cadena de cadena, adquisición de caracteres de cadena, inserción y eliminación de cadena, subcadena de cadena, etc. He aprendido mucho de la revisión y tengo que seguir aprendiendo C ++ (  ̄ ▽  ̄ ) ブ.

Supongo que te gusta

Origin blog.csdn.net/qq_45252077/article/details/108766212
Recomendado
Clasificación