Directorio de artículos
-
-
- Contenedor de 3.1 cuerdas
-
- 3.1.1 Concepto básico de cuerda
- 3.1.2 constructor de cadenas
- 3.1.3 Operación de asignación de cadenas
- 3.1.4 Concatenación de cadenas de caracteres
- 3.1.5 búsqueda y reemplazo de cadenas
- 3.1.6 Comparación de cadenas de cadenas
- 3.1.7 acceso a caracteres de cadena
- 3.1.8 inserción y eliminación de cadenas
- 3.1.9 subcadena de cadena
-
Contenedor de 3.1 cuerdas
3.1.1 Concepto básico de cuerda
Naturaleza:
- cadena es una cadena de estilo C ++, y cadena es esencialmente una clase
La diferencia entre string y char *:
- char * es un puntero
- String es una clase que encapsula char * y administra esta cadena, que es un contenedor de tipo char *.
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 de la clase
3.1.2 constructor de cadenas
Prototipo de constructor:
string();
// Crea una cadena vacía Por ejemplo: string str;
string(const char* s);
// Inicializa con string sstring(const string& str);
// Usa un objeto de cadena para inicializar otro objeto de cadenastring(int n, char c);
// Usa n caracteres c para inicializar
Ejemplo:
#include <string>
//string构造
void test01()
{
string s1; //创建空字符串,调用无参构造函数
cout << "str1 = " << s1 << endl;
const char* str = "hello world";
string s2(str); //把c_string转换成了string
cout << "str2 = " << s2 << endl;
string s3(s2); //调用拷贝构造函数
cout << "str3 = " << s3 << endl;
string s4(10, 'a');
cout << "str3 = " << s3 << endl;
}
int main() {
test01();
system("pause");
return 0;
}
Resumen: Los múltiples métodos de construcción de cuerdas no son comparables y se pueden usar de manera flexible.
3.1.3 Operación de asignación de cadenas
Función descriptiva:
- Asignar valor a la cadena
Prototipo de función para asignación:
string& operator=(const char* s);
// char * tipo cadena se asigna a la cadena actualstring& operator=(const string &s);
// Asignar la cadena s a la cadena actualstring& operator=(char c);
// Los caracteres se asignan a la cadena actualstring& assign(const char *s);
// Asignar la cadena s a la cadena actualstring& assign(const char *s, int n);
// Asignar los primeros n caracteres de la cadena sa la cadena actualstring& assign(const string &s);
// Asignar la cadena s a la cadena actualstring& assign(int n, char c);
// Usa n caracteres c para asignar la cadena actual
Ejemplo:
//赋值
void test01()
{
string str1;
str1 = "hello world";
cout << "str1 = " << str1 << endl;
string str2;
str2 = str1;
cout << "str2 = " << str2 << endl;
string str3;
str3 = 'a';
cout << "str3 = " << str3 << endl;
string str4;
str4.assign("hello c++");
cout << "str4 = " << str4 << endl;
string str5;
str5.assign("hello c++",5);
cout << "str5 = " << str5 << endl;
string str6;
str6.assign(str5);
cout << "str6 = " << str6 << endl;
string str7;
str7.assign(5, 'x');
cout << "str7 = " << str7 << endl;
}
int main() {
test01();
system("pause");
return 0;
}
para resumir:
Hay muchas operator=
formas de asignar valores de cadena, esta forma es más práctica
3.1.4 Concatenación de cadenas de caracteres
Función descriptiva:
- Logra empalmar cuerdas al final de la cuerda.
Prototipo de función:
string& operator+=(const char* str);
// Sobrecarga + = operadorstring& operator+=(const char c);
// Sobrecarga + = operadorstring& operator+=(const string& str);
// Sobrecarga + = operadorstring& append(const char *s);
// Conecta la cadena s al final de la cadena actualstring& append(const char *s, int n);
// Conecta los primeros n caracteres de la cadena s al final de la cadena actualstring& append(const string &s);
// 同 operador + = (cadena const & str)string& append(const string &s, int pos, int n);
// Los n caracteres de pos en la cadena s están conectados al final de la cadena
Ejemplo:
//字符串拼接
void test01()
{
string str1 = "我";
str1 += "爱玩游戏";
cout << "str1 = " << str1 << endl;
str1 += ':';
cout << "str1 = " << str1 << endl;
string str2 = "LOL DNF";
str1 += str2;
cout << "str1 = " << str1 << endl;
string str3 = "I";
str3.append(" love ");
str3.append("game abcde", 4);
//str3.append(str2);
str3.append(str2, 4, 3); // 从下标4位置开始 ,截取3个字符,拼接到字符串末尾
cout << "str3 = " << str3 << endl;
}
int main() {
test01();
system("pause");
return 0;
}
Resumen: hay muchas versiones sobrecargadas de empalme de cuerdas, solo recuerde algunas en la etapa de principiante
3.1.5 búsqueda y reemplazo de cadenas
Función descriptiva:
- Buscar: busca si existe la cadena especificada
- Reemplazar: reemplaza la cuerda en la posición especificada
Prototipo de función:
int find(const string& str, int pos = 0) const;
// Encuentra la posición de la primera aparición de str, comenzando desde posint find(const char* s, int pos = 0) const;
// Encuentra la posición de la primera aparición de s, comenzando desde posint find(const char* s, int pos, int n) const;
// Encuentra la primera posición de los primeros n caracteres de s desde la posición posint find(const char c, int pos = 0) const;
// Encuentra la primera posición de ocurrencia del carácter cint rfind(const string& str, int pos = npos) const;
// Encuentra la última posición de str, comenzando desde posint rfind(const char* s, int pos = npos) const;
// Encuentra la posición de la última aparición de s, comenzando desde posint rfind(const char* s, int pos, int n) const;
// Encuentra la última posición de los primeros n caracteres de s desde posint rfind(const char c, int pos = 0) const;
// Encuentra la última posición de ocurrencia del carácter cstring& replace(int pos, int n, const string& str);
// Reemplazar n caracteres de pos a string strstring& replace(int pos, int n,const char* s);
// Reemplazar n caracteres de pos a string s
Ejemplo:
//查找和替换
void test01()
{
//查找
string str1 = "abcdefgde";
int pos = str1.find("de");
if (pos == -1)
{
cout << "未找到" << endl;
}
else
{
cout << "pos = " << pos << endl;
}
pos = str1.rfind("de");
cout << "pos = " << pos << endl;
}
void test02()
{
//替换
string str1 = "abcdefgde";
str1.replace(1, 3, "1111");
cout << "str1 = " << str1 << endl;
}
int main() {
//test01();
//test02();
system("pause");
return 0;
}
para resumir:
- buscar la búsqueda es de izquierda a atrás, rfind de derecha a izquierda
- Buscar devuelve la primera posición del carácter después de encontrar la cadena y devuelve -1 si no se encuentra
- Al reemplazar, debe especificar desde qué posición, cuántos caracteres y qué tipo de cadena reemplazar
3.1.6 Comparación de cadenas de cadenas
Función descriptiva:
- Comparación entre cadenas
Método de comparación:
- La comparación de cadenas consiste en comparar el código ASCII del carácter.
= Devolver 0
> Volver 1
<Devolver -1
Prototipo de función:
int compare(const string &s) const;
// Comparar con la cadena sint compare(const char *s) const;
// Comparar con la cadena s
Ejemplo:
//字符串比较
void test01()
{
string s1 = "hello";
string s2 = "aello";
int ret = s1.compare(s2);
if (ret == 0) {
cout << "s1 等于 s2" << endl;
}
else if (ret > 0)
{
cout << "s1 大于 s2" << endl;
}
else
{
cout << "s1 小于 s2" << endl;
}
}
int main() {
test01();
system("pause");
return 0;
}
Resumen: La comparación de cadenas se utiliza principalmente para comparar si dos cadenas son iguales. No es muy significativo juzgar quién es más grande y quién es más pequeño.
3.1.7 acceso a caracteres de cadena
Hay dos formas de acceder a un solo carácter en una cadena
char& operator[](int n);
// Obtener caracteres a través de []char& at(int n);
// Obtener caracteres a través del método at
Ejemplo:
void test01()
{
string str = "hello world";
for (int i = 0; i < str.size(); i++)
{
cout << str[i] << " ";
}
cout << endl;
for (int i = 0; i < str.size(); i++)
{
cout << str.at(i) << " ";
}
cout << endl;
//字符修改
str[0] = 'x';
str.at(1) = 'x';
cout << str << endl;
}
int main() {
test01();
system("pause");
return 0;
}
Resumen: hay dos formas de acceder a un solo carácter en una cadena, use [] o en
3.1.8 inserción y eliminación de cadenas
Función descriptiva:
- Insertar y eliminar caracteres en cadena
Prototipo de función:
string& insert(int pos, const char* s);
// Insertar cadenastring& insert(int pos, const string& str);
// Insertar cadenastring& insert(int pos, int n, char c);
// Inserta n caracteres en la posición especificada cstring& erase(int pos, int n = npos);
// Eliminar n caracteres comenzando desde Pos
Ejemplo:
//字符串插入和删除
void test01()
{
string str = "hello";
str.insert(1, "111");
cout << str << endl;
str.erase(1, 3); //从1号位置开始3个字符
cout << str << endl;
}
int main() {
test01();
system("pause");
return 0;
}
** Resumen: ** Los subíndices iniciales para la inserción y eliminación comienzan desde 0
3.1.9 subcadena de cadena
Función descriptiva:
- Obtenga la subcadena deseada de la cadena
Prototipo de función:
string substr(int pos = 0, int n = npos) const;
// Devuelve una cadena que consta de n caracteres que comienzan en pos
Ejemplo:
//子串
void test01()
{
string str = "abcdefg";
string subStr = str.substr(1, 3);
cout << "subStr = " << subStr << endl;
string email = "[email protected]";
int pos = email.find("@");
string username = email.substr(0, pos);
cout << "username: " << username << endl;
}
int main() {
test01();
system("pause");
return 0;
}
** Resumen: ** El uso flexible de la función de subcadena puede obtener información efectiva en el desarrollo real
Para obtener más información, siga la cuenta oficial: