Com es divideix la cadena en C ++

How Split String C



Treballar amb dades de cadenes és una part essencial de qualsevol llenguatge de programació. De vegades, hem de dividir les dades de la cadena amb finalitats de programació. La funció split () existeix en molts llenguatges de programació per dividir la cadena en diverses parts. No hi ha cap funció split () integrada a C ++ per dividir la cadena, però hi ha moltes maneres múltiples en C ++ de fer la mateixa tasca, com ara utilitzar getline () funció, strtok () funció, utilitzant find () i esborrar () funcions, etc. Els usos d’aquestes funcions per dividir cadenes en C ++ s’han explicat en aquest tutorial.

Requisit previ

Abans de comprovar els exemples d’aquest tutorial, heu de comprovar que el compilador g ++ està instal·lat o no al sistema. Si feu servir Visual Studio Code, instal·leu les extensions necessàries per compilar el codi font de C ++ per crear el codi executable. Aquí, s’ha utilitzat l’aplicació Visual Studio Code per compilar i executar el codi C ++.







Divideix la cadena mitjançant la funció getline ()

La funció getline () s’utilitza per llegir caràcters d’una cadena o d’un contingut de fitxer fins que es troba un separador o separador concret i emmagatzemar cada cadena d’anàlisi en una altra variable de cadena. La funció continuarà la tasca fins que s'analitzi el contingut complet de la cadena o fitxer. La sintaxi d'aquesta funció es dóna a continuació.



Sintaxi:



istream&getline(istream&és, cadena&str,chardelim);

Aquí, el primer paràmetre, isstream, és l'objecte d'on s'extreuran els caràcters. El segon paràmetre és una variable de cadena que emmagatzemarà el valor extret. El tercer paràmetre s’utilitza per establir el delimitador que s’utilitzarà per extreure la cadena.





Creeu un fitxer C ++ amb el codi següent per dividir una cadena basada en el delimitador d'espai mitjançant el fitxer getline () funció. S'ha assignat un valor de cadena de diverses paraules a una variable i s'ha utilitzat espai com a separador. S'ha declarat una variable vectorial per emmagatzemar les paraules extretes. A continuació, s'ha utilitzat el bucle 'for' per imprimir cada valor de la matriu vectorial.

// Incloeu les biblioteques necessàries
#incloure
#incloure
#incloure
#incloure

intprincipal()
{
// Definiu les dades de cadena que es dividiran
hores::cordastrData= 'Aprèn programació C ++';
// Definiu les dades de contingut que es treballaran com a delimitador
const charseparador= '';
// Definiu la variable de matriu dinàmica de les cadenes
hores::vectoroutputArray;
// Construeix un flux a partir de la cadena
hores::stringstreamstreamData(strData);
/ *
Declareu la variable de cadena que s'utilitzarà
per emmagatzemar dades després de dividir-les
* /

hores::cordahores;
/ *
El bucle iterarà les dades dividides i
inseriu les dades a la matriu
* /

mentre (hores::getline(streamData, val, separador)) {
outputArray.fer retrocedir(hores);
}
// Imprimiu les dades dividides
hores::cost << 'La cadena original és:' <<strData<<hores::endl;
// Llegiu la matriu i imprimiu les dades dividides
hores::cost << ' nEls valors després de dividir la cadena en funció de l'espai: ' <<hores::endl;
per (automàtic &hores:outputArray) {
hores::cost <<hores<<hores::endl;
}
tornar 0;
}

Sortida:



La següent sortida apareixerà després d'executar el codi anterior.

Divideix la cadena mitjançant la funció strtok ()

La funció strtok () es pot utilitzar per dividir una cadena simbolitzant la part de la cadena basant-se en un delimitador. Retorna un punter al següent testimoni si existeix; en cas contrari, retorna un valor NULL. El string.h cal utilitzar un fitxer de capçalera per utilitzar aquesta funció. Un bucle requerirà llegir tots els valors dividits de la cadena. El primer argument conté el valor de la cadena que s’analitzarà i el segon argument conté el delimitador que s’utilitzarà per generar el testimoni. La sintaxi d'aquesta funció es dóna a continuació.

Sintaxi:

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

Creeu un fitxer C ++ amb el codi següent per dividir una cadena mitjançant la funció strtok (). Una matriu de caràcters es defineix al codi que conté dos punts (':') com a separador. A continuació, el strtok () La funció es diu amb el valor de cadena i el delimitador per generar el primer testimoni. El ‘ mentre ’Loop es defineix per generar els altres tokens i els valors del token fins al NUL es troba el valor.

// Incloeu les biblioteques necessàries
#incloure
#incloure

intprincipal()
{
// Declarar un conjunt de caràcters
charstrArray[] = 'Mehrab Hossain: Professional de TI: [correu electrònic protegit]: +8801726783423';
// Torneu el primer valor de testimoni basat en ':'
char *tokenValue= strtok(strArray,':');
// Inicialitzeu la variable de comptador
intcomptador= 1;
/ *
Iterar el bucle per imprimir el valor del testimoni
i divideix la resta de dades de la cadena per obtenir
el següent valor de testimoni
* /

mentre (tokenValue!= NUL)
{
si(comptador== 1)
printf('Nom:% s n', tokenValue);
en cas contrari si(comptador== 2)
printf('Ocupació:% s n', tokenValue);
en cas contrari si(comptador== 3)
printf('Correu electrònic:% s n', tokenValue);
en cas contrari
printf('Mòbil:% s n', tokenValue);
tokenValue= strtok(NUL,':');
comptador++;
}
tornar 0;
}

Sortida:

La següent sortida apareixerà després d'executar el codi anterior.

Divideix la cadena mitjançant les funcions find () i erase ()

La cadena es pot dividir en C ++ mitjançant les funcions find () i erase (). Creeu un fitxer C ++ amb el codi següent per comprovar els usos de les funcions find () i erase () per dividir un valor de cadena basat en un delimitador concret. El valor del testimoni es genera trobant la posició del delimitador mitjançant la funció find () i el valor del testimoni s’emmagatzemarà després d’eliminar el delimitador mitjançant la funció erase (). Aquesta tasca es repetirà fins que s'analitzi el contingut complet de la cadena. A continuació, s’imprimiran els valors de la matriu vectorial.

// Incloeu les biblioteques necessàries
#incloure
#incloure
#incloure

intprincipal(){
// Definiu la cadena
hores::cordastringData= 'Bangladesh i Japó i Alemanya i Brasil';
// Definiu el separador
hores::cordaseparador= 'i';
// Declareu la variable vectorial
hores::vectorpaís{};
// Declarar la variable enter
intposició;
// Declareu la variable de cadena
hores::cordaoutstr, testimoni;

/ *
Dividiu la cadena mitjançant la funció substr ()
i afegir la paraula dividida al vector
* /

mentre ((posició=stringData.trobar(separador)) !=hores::corda::npos) {
fitxa=stringData.substr(0, posició);
// Traieu l'espai extra de la part davantera de la corda dividida
país.fer retrocedir(fitxa.esborrar(0, testimoni.trobar_primer_no_de('')));
stringData.esborrar(0, posició+separador.llargada());
}
// Imprimiu totes les paraules dividides, excepte l'última
per (const automàtic &outstr:país) {
hores::cost <<outstr<<hores::endl;
}
// Imprimiu l'última paraula dividida
hores::cost <<stringData.esborrar(0, stringData.trobar_primer_no_de('')) <<hores::endl;
tornar 0;
}

Sortida:

La següent sortida apareixerà després d'executar el codi anterior.

Conclusió

En aquest tutorial s’han explicat tres maneres diferents de dividir una cadena en C ++ mitjançant exemples senzills per ajudar els nous usuaris de Python a realitzar l’operació de divisió fàcilment a C ++.