Come dividere una stringa in C++

How Split String C



Lavorare con i dati delle stringhe è una parte essenziale di qualsiasi linguaggio di programmazione. A volte abbiamo bisogno di dividere i dati della stringa per scopi di programmazione. La funzione split() esiste in molti linguaggi di programmazione per dividere la stringa in più parti. Non esiste una funzione split() incorporata in C++ per suddividere la stringa, ma esistono molti modi multipli in C++ per eseguire la stessa attività, come l'uso getline() funzione, strtok() funzione, usando trova() e cancellare() funzioni, ecc. Gli usi di queste funzioni per dividere le stringhe in C++ sono stati spiegati in questo tutorial.

Prerequisito

Prima di controllare gli esempi di questo tutorial, devi verificare che il compilatore g++ sia installato o meno nel sistema. Se stai usando Visual Studio Code, installa le estensioni necessarie per compilare il codice sorgente C++ per creare il codice eseguibile. Qui, l'applicazione Visual Studio Code è stata utilizzata per compilare ed eseguire il codice C++.







Dividi la stringa usando la funzione getline()

La funzione getline() viene utilizzata per leggere i caratteri da una stringa o dal contenuto di un file finché non viene trovato un particolare delimitatore o separatore e memorizza ogni stringa di analisi in un'altra variabile di stringa. La funzione continuerà l'attività fino a quando non verrà analizzato l'intero contenuto della stringa o del file. La sintassi di questa funzione è riportata di seguito.



Sintassi:



istream&getline(istream&è, stringa&str,chardelim);

Qui, il primo parametro, isstream, è l'oggetto da cui verranno estratti i caratteri. Il secondo parametro è una variabile stringa che memorizzerà il valore estratto. Il terzo parametro viene utilizzato per impostare il delimitatore che utilizzerà per l'estrazione della stringa.





Crea un file C++ con il seguente codice per dividere una stringa in base al delimitatore di spazio usando il getline() funzione. Un valore stringa di più parole è stato assegnato a una variabile e lo spazio è stato utilizzato come separatore. È stata dichiarata una variabile vettoriale per memorizzare le parole estratte. Successivamente, il ciclo 'for' è stato utilizzato per stampare ciascun valore dall'array vettoriale.

//Include le librerie necessarie
#includere
#includere
#includere
#includere

intprincipale()
{
//Definisce i dati della stringa che verranno divisi
ore::cordastrData= 'Impara la programmazione C++';
//Definisci i dati di contatto che verranno utilizzati come delimitatori
cost charseparatore= '';
//Definisce la variabile array dinamica di stringhe
ore::vettoreoutputArray;
//costruisce un flusso dalla stringa
ore::stringstreamstreamData(strData);
/ *
Dichiara la variabile stringa che verrà utilizzata
per memorizzare i dati dopo la divisione
* /

ore::cordaore;
/ *
Il ciclo itera i dati divisi e
inserire i dati nell'array
* /

mentre (ore::getline(streamData, val, separator)) {
outputArray.respingere(ore);
}
//Stampa i dati divisi
ore::costo << 'La stringa originale è:' <<strData<<ore::fine;
//Leggi l'array e stampa i dati divisi
ore::costo << ' I valori dopo aver diviso la stringa in base allo spazio:' <<ore::fine;
per (auto &ore:outputArray) {
ore::costo <<ore<<ore::fine;
}
Restituzione 0;
}

Produzione:



Il seguente output apparirà dopo aver eseguito il codice sopra.

Dividi la stringa usando la funzione strtok()

La funzione strtok() può essere utilizzata per dividere una stringa tokenizzando la parte della stringa in base a un delimitatore. Restituisce un puntatore al token successivo se esiste; in caso contrario, restituisce un valore NULL. Il string.h file di intestazione è necessario per utilizzare questa funzione. Un ciclo richiederà la lettura di tutti i valori divisi dalla stringa. Il primo argomento contiene il valore della stringa che verrà analizzato e il secondo argomento contiene il delimitatore che verrà utilizzato per generare il token. La sintassi di questa funzione è riportata di seguito.

Sintassi:

char * strtok ( char *str,cost char *Delimitatori);

Crea un file C++ con il seguente codice per dividere una stringa utilizzando la funzione strtok(). Una matrice di caratteri è definita nel codice contenente i due punti (':') come separatore. Successivamente, il strtok() la funzione viene chiamata con il valore stringa e il delimitatore per generare il primo token. Il ' mentre ' loop è definito per generare gli altri token e i valori dei token fino al NULLO si trova il valore.

//Include le librerie necessarie
#includere
#includere

intprincipale()
{
//Dichiara un array di caratteri
charstrArray[] = 'Mehrab Hossain :Professionista IT : [email protected] :+8801726783423';
//Restituisci il primo valore del token in base a ':'
char *tokenValue= strtok(strArray,':');
//Inizializza la variabile contatore
intcontatore= 1;
/ *
Iterare il ciclo per stampare il valore del token
e dividere i dati della stringa rimanenti per ottenere
il prossimo valore del token
* /

mentre (tokenValue!= NULLO)
{
Se(contatore== 1)
printf('Nome: %s ', tokenValue);
altro Se(contatore== 2)
printf('Occupazione: %s ', tokenValue);
altro Se(contatore== 3)
printf('E-mail: %s ', tokenValue);
altro
printf('Numero cellulare: %s ', tokenValue);
tokenValue= strtok(NULLO,':');
contatore++;
}
Restituzione 0;
}

Produzione:

Il seguente output apparirà dopo aver eseguito il codice sopra.

Dividi la stringa usando le funzioni trova() e cancella()

La stringa può essere suddivisa in C++ utilizzando le funzioni find() e erase(). Crea un file C++ con il seguente codice per verificare gli usi delle funzioni find() e erase() per dividere un valore stringa in base a un particolare delimitatore. Il valore del token viene generato trovando la posizione del delimitatore utilizzando la funzione find() e il valore del token verrà memorizzato dopo aver rimosso il delimitatore utilizzando la funzione erase(). Questa attività verrà ripetuta fino a quando non verrà analizzato l'intero contenuto della stringa. Successivamente, verranno stampati i valori dell'array vettoriale.

//Include le librerie necessarie
#includere
#includere
#includere

intprincipale(){
//Definisci la stringa
ore::cordastringData= 'Bangladesh e Giappone e Germania e Brasile';
//Definisci il separatore
ore::cordaseparatore= 'e';
//Dichiara la variabile vettoriale
ore::vettorenazione{};
//Dichiara variabile intera
intposizione;
//Dichiara variabile stringa
ore::cordaoutstr, token;

/ *
Dividi la stringa usando la funzione substr()
e aggiungendo la parola divisa nel vettore
* /

mentre ((posizione=stringData.trova(separatore)) !=ore::corda::npos) {
gettone=stringData.substr(0, posizione);
//Rimuove lo spazio extra dalla parte anteriore della stringa divisa
nazione.respingere(gettone.cancellare(0, gettone.trova_primo_non_di('')));
stringData.cancellare(0, posizione+separatore.lunghezza());
}
//Stampa tutte le parole suddivise tranne l'ultima
per (cost auto &fuori:nazione) {
ore::costo <<fuori<<ore::fine;
}
//Stampa l'ultima parola divisa
ore::costo <<stringData.cancellare(0, stringData.trova_primo_non_di('')) <<ore::fine;
Restituzione 0;
}

Produzione:

Il seguente output apparirà dopo aver eseguito il codice sopra.

Conclusione

In questo tutorial sono stati spiegati tre modi diversi per dividere una stringa in C++ utilizzando semplici esempi per aiutare i nuovi utenti Python a eseguire facilmente l'operazione di divisione in C++.