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 ++.