Cómo dividir cadenas usando delimitador en C ++

Cómo dividir cadenas usando delimitador en C ++
Dividir una cadena usando un delimitador es una operación común en la programación, particularmente cuando se trabaja con datos de texto. A delimitador es un personaje o secuencia de caracteres utilizados para separar una sección de una cadena de otra. Cuando un texto se separa en subcadenas más pequeñas utilizando un delimitador, el delimitador o el separador está predeterminado. Muchas tareas de programación, como el análisis de datos de entrada, la tokenización de texto y el procesamiento de cadenas, usan esta técnica. Hay varios división de cadenas Métodos disponibles en C ++, cada uno con ventajas y contras.

En este artículo, exploraremos algunas de las formas comunes de dividir una cadena usando un delimitador Cª++.

Cadenas divididas usando delimitador en c++

En C ++, hay múltiples enfoques para romper una cadena usando un delimitador, que incluye:

  • Usando las funciones find () y sustr ()
  • Usando la función Strtok ()
  • Usando la clase Stringstream

1: Uso de las funciones find () y sustr ()

Una cadena se puede dividir utilizando las funciones C ++ encontrar() y subStr (). La primera instancia de una subcadena se encuentra utilizando el encontrar() método. Si no hay más ocurrencias, la pieza restante de la cuerda se devolverá después de ser colocada en el vector. La subcadena que comienza al comienzo del texto y termina en el delimitador se puede extraer utilizando el subStr () función. Podemos seguir haciendo esto hasta que se hayan obtenido todas las subcadenas.

Aquí hay un ejemplo de C ++ de cómo dividir una cadena usando un delimitador:

#incluir
#incluir
int main ()
std :: string str = "manzana, plátano, cereza";
std :: string delimiter = ",";
size_t pos = 0;
std :: token de cadena;
mientras ((pos = str.encontrar (delimitador)) != std :: string :: npos)
token = str.subStr (0, pos);
std :: cout << token << std::endl;
stri.borrar (0, pos + delimitador.longitud());

std :: cout << str << std::endl;
regresar 0;

En el ejemplo anterior, una cadena nombrada "Str" y un delimitador nombrado "Delimitre" están definidos. Las subcadenas de "Str" luego se extraen usando un bucle de tiempo. La ubicación del delimitador es devuelta por el encontrar() método, o std :: string :: opos Si no se puede ubicar. La subcadena desde el comienzo de "Str" hasta el delimitador se extrae usando "SubStr ()" en este lugar, y luego se imprime en la consola. La subcadena extraída y el delimitador se sacan de "Str" utilizando el "borrar()" función. Una vez que no haya más delimitadores en "Str", Repetimos esta operación. Después, generamos la última subcadena "cereza" a la consola.

Producción

2: usando la función strtok ()

El Strtok () La función es otra función en C ++ que puede dividir efectivamente las cadenas usando un delimitador en cualquier programa C ++. Saca dos entradas; la cadena a dividirse y el carácter delimitador. Aquí hay una implementación de Strtok () función en c ++:

#incluir
#incluir
usando el espacio de nombres STD;
int main ()

char str [100];
cout << " Enter a string: " <cinta.GetLine (str, 100);
char *ptr;
ptr = strtok (str, ",");
cout << " \n Splitting the string: " << endl;
Mientras (PTR != Nulo)

cout << ptr << endl;
ptr = strtok (nulo, ",");

regresar 0;

El Strtok () La función se usa en el código anterior para romper una cadena de entrada suministrada por el usuario en tokens, utilizando una coma y un espacio como delimitadores. Luego publica cada token a la consola en una línea separada. Esto se logra almacenando la cadena de entrada en una matriz de char, iterando sobre las fichas con un puntero de char, y luego dividiendo la cadena repetidamente hasta que se hayan mostrado todas las fichas.

Producción

3: Usando la clase Stringstream

Utilizando el La clase es otra técnica para dividir una cadena en c++. Es posible ingresar y emitir datos formateados, incluidas las cadenas, utilizando esta clase. Una cadena que se maneja como una corriente puede tener sustrings extraídos de él utilizando el obtener línea() método. El obtener línea() El método extraerá la subcadena al delimitador si le proporcionamos el delimitador como parámetro.

Aquí hay una ilustración de cómo dividir una cadena en c++ utilizando el stringstream () función.

#incluir
#incluir
#incluir
#incluir
int main ()
std :: string input_string = "Apple, Banana, Cherry";
std :: vector tokens;
std :: stringstream ss (input_string);
std :: token de cadena;
while (std :: getline (ss, token, ','))
tokens.push_back (token);

para (auto t: tokens)
std :: cout << t << std::endl;

regresar 0;

En el código anterior, se usa un carácter delimitador para dividir una cadena de entrada en tokens usando . Antes de extraer cada token del Usando el delimitador, el programa inicializa un Objeto con la cadena de entrada. Luego, un vector de cadenas se expande por cada token. El programa luego buceará a través del vector, imprimiendo cada token a la consola al final.

Producción

Conclusión

Dividir una cadena usando un delimitador es un enfoque efectivo en C ++ y hay varias funciones incorporadas en C ++ que hacen posible dividir cadenas. Estas funciones incluyen find (), substr (), strtok () y stringstream clase. Los desarrolladores deben considerar los requisitos específicos de su aplicación y elegir la función que mejor funciona para ellos.