Subcandina C ++ desde el índice hasta el índice

Subcandina C ++ desde el índice hasta el índice
Una subtracción o subcadena o rango es solo una parte de una secuencia de caracteres dentro de la cadena literal. Saber qué es una subcadena en C ++ no es suficiente para un programador. El programador tiene que comprender cómo identificar la subcadena por código. El programador tiene que saber cómo devolver una subcadena. El programador tiene que saber cómo eliminar una subcadena. El programador debe saber cómo reemplazar una subcadena después de la eliminación.

Se puede crear una cadena de dos maneras principales: por const char* (matriz-decars) o instanciando desde la clase de cadena. En el caso de la instancia de la clase de cadena, la biblioteca de cadenas debe incluirse en el programa C ++. Identificar, regresar, eliminar y reemplazar una subcadena en C ++, normalmente se realiza solo con el objeto de cadena instanciado desde la clase de cadena.

El objeto de cadena es una estructura de datos con métodos (funciones miembros). Su lista consta de elementos, donde cada elemento tiene un personaje. Los valores de la lista son los caracteres. Al igual que una matriz, se puede acceder a cada carácter del objeto de cadena mediante un índice. Por lo tanto, se puede identificar una subtracción mediante índices: un índice más bajo y un índice más alto. El rango comienza desde el índice más bajo hasta el índice más alto, excluyendo el índice más alto. El carácter para el índice más alto no está incluido en el rango, y la longitud de la subtracción proviene del carácter del índice inferior al carácter justo antes del índice superior.

Dos iteradores también pueden identificar una subcadena o rango: el primer iterador es para el comienzo del rango, y el último iterador es para el personaje, que es justo después del último carácter real (o al final de la cuerda). Existe una relación simple entre el iterador y el índice: ver más abajo.

Este artículo explica qué es una subcadena y cómo identificar, devolver, eliminar y reemplazar una subcadena en C++.

Contenido del artículo

  • Identificar y devolver una subcadena
  • Relacionar iterador e índice
  • Eliminar una subcadena
  • Reemplazo de una subcadena
  • Conclusión

Identificar y devolver una subcadena

La clase C ++ tiene una función miembro llamada Substr () para sub-string (). La sintaxis es:

Basic_String Substr (size_type pos = 0, size_type n = npos) const

Esta función devuelve la subcadena como un objeto de cadena. El primer argumento indica la posición del índice donde comienza la subcontratación. El personaje de POS se incluye en la subcadena. El segundo argumento da la longitud de la subcadena. La longitud es el número de caracteres que comienzan desde POS. No incluye el carácter para el índice superior. El índice más alto es: POS + OSPOS (aunque la longitud, la OSCS se mide desplazada un lugar hacia la izquierda). El conteo de índice comienza desde cero. El siguiente programa ilustra el uso de esta función miembro:

#incluir
#incluir
usando el espacio de nombres STD;
int main ()
cadena str = "one_two_three_four_five";
String substrin = str.subStr (8, 5);
cout << substrin << endl;
regresar 0;

La salida es:

tres

Si estos dos argumentos están ausentes, se considera toda la cadena, como se ilustra en el siguiente programa:

#incluir
#incluir
usando el espacio de nombres STD;
int main ()
cadena str = "one_two_three_four_five";
String substrin = str.subStr ();
cout << substrin << endl;
regresar 0;

La salida es:

uno dos tres CUATRO CINCO

La palabra reservada, const al final de la sintaxis, significa que la función subStr () copia la subtracción y la devuelve. No elimina la subtracción.

Relacionar iterador e índice

Cuando un iterador apunta a un personaje, para obtener el iterador para el final del rango, solo agregue la longitud (número) de los caracteres para el intervalo, y el nuevo iterador apuntará al final del rango. El personaje de este último iterador no está incluido en el rango o la subcadena. El rango y la subcadena aquí son las mismas cosas (son lo mismo anterior). Para la función de miembro de la cadena subStr (), la OSCH es la longitud del intervalo.

El iterador que corresponde al índice cero es:

stri.comenzar()

Se puede agregar OSPS a este iterador para señalar el último elemento del rango. El último elemento o el último carácter de la gama no es parte de la subconjua.

El iterador que corresponde al punto justo después del último carácter de la cadena es:

stri.fin()

Las OSPS se pueden restar de esto para señalar cualquier primer carácter deseado de la cadena.

begin () y end () son funciones miembros de la clase de cadena.

Eliminar una subcadena

Se identifica una subcadena en un objeto de cadena, con los argumentos, POS y NPOS de la función subStr (). Recuerde que el OSFE es un intervalo. La clase de cadena también tiene una función miembro llamada ERASE (). ERASE () está en formularios sobrecargados. Una de las funciones de miembro de Erase () sobrecargadas identifica la subcadena con POS y NPOS. La sintaxis es:

BASIC_STRING & ERASE (size_type pos = 0, size_type n = npos)

Esta función de borrado elimina la subcadena y devuelve la cadena original con la subcadena eliminada.

Entonces, para eliminar una subcadena, la función subStr () no es necesaria. Son sus argumentos que se necesitan. Para eliminar una subcadena, use la función ERASE Miember del objeto de cadena. Para tener una copia de la subcadena, simplemente use la función subStr () antes de borrar. El siguiente programa muestra una buena forma de eliminar una subcadena:

#incluir
#incluir
usando el espacio de nombres STD;
int main ()
cadena str = "one_two_three_four_five";
String substrin = str.subStr (8, 5);
cadena ret = str.borrar (8, 5);
cout <cout <cout <regresar 0;

La salida es:

tres
One_two__four_five
One_two__four_five

Una sintaxis para eliminar una subcadena con argumentos de iterador es:

ERASE ITERATOR (const_iterator primero, const_iterator Último)

Con esto, el iterador identifica primero el comienzo de la subcadena, correspondiente al índice, POS. Para obtener el final de la subcadena, el iterador se identifica por el final, que se obtiene haciendo, primero + NPOS. La codificación para eliminar una subcadena utilizando esta variante de función Eraase () sobrecargada se deja como un ejercicio para el lector.

Reemplazo de una subcadena

Lo que realmente identifica una subcadena son los argumentos: POS y OSPOS. Para devolver una subcadena, use la función miembro de la clase de cadena, substr (). Para eliminar una subcadena, use la función de miembro de la clase de cadena, ERASE (). Y para reemplazar una subcadena con una de cualquier longitud, use la función de miembro de la clase de cadena, reemplazar (). La función de reemplazo tiene muchas variantes sobrecargadas. El que usa el índice es:

BASIC_STRING & REEPLAT (size_type POS1, size_type N1, const t&T)

Donde POS1 es POS, N1 es NPO y T es una matriz independiente para el reemplazo. Devuelve la cadena original, incluido el reemplazo.

Nota: En C ++, una subcadena no debe eliminarse (borrar) antes de que se reemplace.
El siguiente programa muestra una buena forma de reemplazar una subcadena:

#incluir
#incluir
usando el espacio de nombres STD;
int main ()
cadena str = "one_two_three_four_five";
char chs [] = "ccc";
String substrin = str.subStr (8, 5);
cadena ret = str.reemplazar (8, 5, CHS);
cout <cout <cout <regresar 0;

La salida es:

tres
One_two_ccc_four_five
One_two_ccc_four_five

El reemplazo del código anterior tenía menos de 5 caracteres de longitud. El siguiente programa muestra el caso en el que el reemplazo es superior a 5 caracteres:

#incluir
#incluir
usando el espacio de nombres STD;
int main ()
cadena str = "one_two_three_four_five";
char chs [] = "ccccccccc";
String substrin = str.subStr (8, 5);
cadena ret = str.reemplazar (8, 5, CHS);
cout <cout <cout <regresar 0;
tres
One_two_cccccccc_four_five
One_two_cccccccc_four_five

Una sintaxis para reemplazar una subcadena con argumentos de iterador es:

BASIC_STRING & REPLAT (const_iterator I1, const_iterator I2, const t&T)

Con esta sintaxis, el comienzo de la subcadena es identificado por el iterador, I1, que corresponde al índice, POS. Para obtener el final de la subcadena, el iterador es identificado por I2, que se obtiene haciendo, I1 + OSPOS. t tiene el mismo significado que el anterior. El siguiente programa muestra cómo usar esta sintaxis:

#incluir
#incluir
usando el espacio de nombres STD;
int main ()
cadena str = "one_two_three_four_five";
string :: const_iterator itb = str.comenzar();
string :: const_iterator itpos = itb + 8;
string :: const_iterator itnpos = itpos + 5;
char chs [] = "ccccc";
String substrin = str.subStr (8, 5);
cadena ret = str.reemplazar (ITPOS, ITNPOS, CHS);
cout <cout <cout <regresar 0;

La salida es:

tres
One_two_ccccc_four_five
One_two_ccccc_four_five

Tenga en cuenta que los iteradores utilizados son iteradores constantes. El iterador que corresponde al índice, POS, se obtiene con ITB + 8. El iterador que corresponde al índice más alto se obtiene con ITPOS + 5.

Conclusión

Una subtracción o subcadena o rango es solo una parte de una secuencia de caracteres dentro de una cadena literal. Para devolver una subcadena, use la función miembro de la clase de cadena, substr (). Para eliminar una subcadena, use la función de miembro de la clase de cadena, ERASE (). Para reemplazar una subcadena, use la función de miembro de la clase de cadena, reemplazar (). Para todas estas funciones, el argumento del índice, POS y el intervalo de índice, OSFS, son clave para identificar la subcadena de la cadena principal.