Cómo dividir la cadena en C ++

Cómo dividir la cadena en C ++
Trabajar con datos de cadena es una parte esencial de cualquier lenguaje de programación. A veces necesitamos dividir los datos de cadena para fines de programación. La función Split () existe en muchos lenguajes de programación para dividir la cadena en múltiples partes. No hay función dividida () incorporada en C ++ para dividir la cadena, pero existen muchas maneras 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 el código Visual Studio, instale las extensiones necesarias para compilar el código fuente de C ++ para crear el código ejecutable. Aquí, la aplicación de código de Visual Studio se ha utilizado para compilar y ejecutar el código C ++.

Cadena dividida usando la función getLine ()

La función getLine () se usa para leer caracteres desde una cadena o un contenido de archivo hasta que se encuentre un delimitador o separador en particular y almacene 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 da a continuación.

Sintaxis:

istream & getline (istream & is, string & str, char delim);

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

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

// Incluye las bibliotecas necesarias
#incluir
#incluir
#incluir
#incluir
int main ()

// Definir datos de cadena que se dividirán
std :: string strData = "Learn C ++ Programming";
// Definir datos contantes que se trabajarán como delimitador
const char separator = ";
// Defina la variable de matriz dinámica de las cadenas
std :: vector outputArray;
// construye una transmisión a partir de la cadena
std :: stringstream streamData (strData);
/*
Declarar variable de cadena que se utilizará
Para almacenar datos después de la división
*/
std :: string val;
/*
El bucle iterará los datos divididos y
Inserte los datos en la matriz
*/
while (std :: getline (streamData, val, separator))
outputarray.push_back (val);

// imprime los datos divididos
std :: cout << "The original string is:" << strData << std::endl;
// Lea la matriz e imprima los datos divididos
std :: cout <<
"Los valores después de dividir la cadena en función del espacio:" <<
std :: endl;
para (Auto & Val: OutputArray)
std :: cout << val << std::endl;

regresar 0;

Producción:

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

Cadena dividida usando la función strtok ()

La función StrTok () se puede usar para dividir una cadena tokenizando la parte de la cadena basada en un delimitador. Devuelve un puntero a la siguiente token si existe; De lo contrario, devuelve un valor nulo. El cadena.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 la 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 da a continuación.

Sintaxis:

char * strtok (char * str, const char * delimiters);

Cree un archivo C ++ con el siguiente código para dividir una cadena utilizando la función Strtok (). Una variedad de caracteres se define en el código que contiene un colon (':') como el separador. A continuación, el Strtok () La función se llama con el valor de cadena y el delimitador para generar el primer token. El 'mientras'Loop se define para generar los otros tokens y los valores de token hasta que NULO Se encuentra el valor.

// Incluye las bibliotecas necesarias
#incluir
#incluir
int main ()

// declarar una variedad de personajes
Char StrraRray [] = "Mehrab Hossain: IT Professional: [email protected]: +8801726783423 ";
// devuelve el primer valor de token basado en ':'
char *tokenValue = strTok (StrraRray, ":");
// Inicializar la variable de contador
int contador = 1;
/*
Iterar el bucle para imprimir el valor del token
y divide los datos de cadena restantes para obtener
el siguiente valor de token
*/
Mientras (TokenValue != Nulo)

if (contador == 1)
printf ("Nombre: %S \ n", TokenValue);
más si (contador == 2)
printf ("Ocupación: %S \ n", TokenValue);
más si (contador == 3)
printf ("correo electrónico: %s \ n", tokenValue);
demás
printf ("móvil no. : %s \ n ", tokenvalue);
tokenValue = strtok (nulo, ":");
contador ++;

regresar 0;

Producción:

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

Split String 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 basado en un delimitador particular. El valor del token se genera al encontrar la posición delimitador utilizando 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 vectorial.

// Incluye las bibliotecas necesarias
#incluir
#incluir
#incluir
int main ()
// Defina la cadena
std :: string stringData = "Bangladesh y Japón y Alemania y Brasil";
// Defina el separador
std :: string separator = "y";
// Declarar la variable vectorial
std :: vector país;
// declarar variable entera
INT POSICIÓN;
// declarar variable de cadena
std :: string outstr, token;
/*
Dividir la cadena usando la función subStr ()
y agregar la palabra dividida al vector
*/
while ((posicion = stringData.encontrar (separador)) != std :: string :: npos)
token = stringData.subStr (0, posición);
// Retire el espacio adicional desde la parte delantera de la cadena dividida
país.push_back (token.borrar (0, token.find_first_not_of ("")));
stringdata.borrar (0, posición + separador.longitud());

// Imprima toda la palabra dividida excepto la última
para (const auto & outstr: country)
std :: cout << outstr << std::endl;

// imprime la última palabra dividida
std :: cout << stringData.erase(0, stringData.find_first_not_of(" ")) << std::endl;
regresar 0;

Producción:

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

Conclusión

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