Cómo dividir cadenas en C ++

How Split String C



Trabajar con datos de cadena es una parte esencial de cualquier lenguaje de programación. A veces necesitamos dividir los datos de la cadena con fines de programación. La función split () existe en muchos lenguajes de programación para dividir la cadena en varias partes. No hay una función split () incorporada en C ++ para dividir cadenas, pero existen muchas formas múltiples en C ++ para hacer la misma tarea, como usar obtener línea() función, strtok () función, usando encontrar() y borrar() funciones, etc. Los usos de estas funciones para dividir cadenas en C ++ se han explicado en este tutorial.

Requisito previo

Antes de verificar los ejemplos de este tutorial, debe verificar que el compilador g ++ esté instalado o no en el sistema. Si está utilizando Visual Studio Code, instale las extensiones necesarias para compilar el código fuente de C ++ para crear el código ejecutable. Aquí, la aplicación Visual Studio Code se ha utilizado para compilar y ejecutar el código C ++.







Dividir cadena usando la función getline ()

La función getline () se usa para leer caracteres de una cadena o el contenido de un archivo hasta que se encuentra un delimitador o separador particular y almacena cada cadena de análisis en otra variable de cadena. La función continuará la tarea hasta que se analice el contenido completo de la cadena o el archivo. La sintaxis de esta función se proporciona a continuación.



Sintaxis:



istream&obtener línea(istream&es, cadena&str,carbonizarsedelimitar);

Aquí, el primer parámetro, isstream, es el objeto de donde se extraerán los personajes. El segundo parámetro es una variable de cadena que almacenará el valor extraído. El tercer parámetro se utiliza para establecer el delimitador que se utilizará para extraer la cadena.





Cree un archivo C ++ con el siguiente código para dividir una cadena según el delimitador de espacio usando el obtener línea() función. Se ha asignado un valor de cadena de varias palabras a una variable y se ha utilizado un espacio como separador. Se ha declarado una variable vectorial para almacenar las palabras extraídas. A continuación, el bucle 'for' se ha utilizado para imprimir cada valor de la matriz de vectores.

// Incluir las bibliotecas necesarias
#incluir
#incluir
#incluir
#incluir

En tprincipal()
{
// Definir los datos de la cadena que se dividirán
horas::cuerdastrData= 'Aprenda a programar en C ++';
// Definir datos contantes que se trabajarán como delimitadores
constante carbonizarseseparador= ' ';
// Definir la variable de matriz dinámica de cadenas
horas::vectoroutputArray;
// Construye una secuencia a partir de la cadena
horas::corriente de hilostreamData(strData);
/*
Declare la variable de cadena que se utilizará
para almacenar datos después de dividir
*/

horas::cuerdahoras;
/*
El ciclo iterará los datos divididos y
inserta los datos en la matriz
*/

tiempo (horas::obtener línea(streamData, val, separator)) {
outputArray.hacer retroceder(horas);
}
// Imprime los datos divididos
horas::costo << 'La cadena original es:' <<strData<<horas::endl;
// Leer la matriz e imprimir los datos divididos
horas::costo << ' orteLos valores después de dividir la cadena según el espacio: ' <<horas::endl;
por (auto &horas:outputArray) {
horas::costo <<horas<<horas::endl;
}
regreso 0;
}

Producción:



La siguiente salida aparecerá después de ejecutar el código anterior.

Dividir cadena usando la función strtok ()

La función strtok () se puede utilizar para dividir una cadena mediante la tokenización de la parte de la cadena en función de un delimitador. Devuelve un puntero al siguiente token si existe; de lo contrario, devuelve un valor NULL. los string.h Se requiere un archivo de encabezado para usar esta función. Un bucle requerirá leer todos los valores divididos de la cadena. El primer argumento contiene el valor de cadena que se analizará y el segundo argumento contiene el delimitador que se utilizará para generar el token. La sintaxis de esta función se proporciona a continuación.

Sintaxis:

carbonizarse * strtok ( carbonizarse *str,constante carbonizarse *delimitadores);

Cree un archivo C ++ con el siguiente código para dividir una cadena usando la función strtok (). Una matriz de caracteres se define en el código que contiene dos puntos (':') como separador. A continuación, el strtok () Se llama a la función con el valor de cadena y el delimitador para generar el primer token. Los ' tiempo 'Bucle se define para generar los otros tokens y los valores del token hasta que el NULO se encuentra el valor.

// Incluir las bibliotecas necesarias
#incluir
#incluir

En tprincipal()
{
// Declara una matriz de caracteres
carbonizarsestrArray[] = 'Mehrab Hossain: Profesional de TI: [correo electrónico protegido]: +8801726783423';
// Devuelve el primer valor de token basado en ':'
carbonizarse *tokenValue= strtok(strArray,':');
// Inicializar la variable del contador
En tencimera= 1;
/*
Itere el ciclo para imprimir el valor del token
y dividir los datos restantes de la cadena para obtener
el siguiente valor de token
*/

tiempo (tokenValue!= NULO)
{
si(encimera== 1)
printf('Nombre:% s orte', tokenValue);
demás si(encimera== 2)
printf('Ocupación:% s orte', tokenValue);
demás si(encimera== 3)
printf('Correo electrónico:% s orte', tokenValue);
demás
printf('Número de móvil:% s orte', tokenValue);
tokenValue= strtok(NULO,':');
encimera++;
}
regreso 0;
}

Producción:

La siguiente salida aparecerá después de ejecutar el código anterior.

Dividir cadena usando las funciones find () y erase ()

La cadena se puede dividir en C ++ usando las funciones find () y erase (). Cree un archivo C ++ con el siguiente código para verificar los usos de las funciones find () y erase () para dividir un valor de cadena en función de un delimitador en particular. El valor del token se genera al encontrar la posición del delimitador usando la función find (), y el valor del token se almacenará después de eliminar el delimitador usando la función erase (). Esta tarea se repetirá hasta que se analice el contenido completo de la cadena. A continuación, se imprimirán los valores de la matriz de vectores.

// Incluir las bibliotecas necesarias
#incluir
#incluir
#incluir

En tprincipal(){
// Definir la cadena
horas::cuerdastringData= 'Bangladesh y Japón y Alemania y Brasil';
// Definir el separador
horas::cuerdaseparador= 'y';
// Declara la variable vectorial
horas::vectorpaís{};
// Declarar variable entera
En tposición;
// Declarar variable de cadena
horas::cuerdaout, token;

/*
Dividir la cadena usando la función substr ()
y agregando la palabra dividida en el vector
*/

tiempo ((posición=stringData.encontrar(separador)) !=horas::cuerda::npos) {
simbólico=stringData.substr(0, posición);
// Elimina el espacio extra del frente de la cadena dividida
país.hacer retroceder(simbólico.borrar(0, token.find_first_not_of(' ')));
stringData.borrar(0, posición+separador.largo());
}
// Imprime todas las palabras divididas excepto la última
por (constante auto &adelantar:país) {
horas::costo <<adelantar<<horas::endl;
}
// Imprime la última palabra dividida
horas::costo <<stringData.borrar(0, stringData.find_first_not_of(' ')) <<horas::endl;
regreso 0;
}

Producción:

La siguiente salida aparecerá después de ejecutar el código anterior.

Conclusión

En este tutorial se han explicado tres formas diferentes de dividir una cadena en C ++ mediante el uso de ejemplos simples para ayudar a los nuevos usuarios de Python a realizar la operación de división fácilmente en C ++.