Cum se împarte șirul în C ++

How Split String C



Lucrul cu date șir este o parte esențială a oricărui limbaj de programare. Uneori trebuie să împărțim datele șirului în scopuri de programare. Funcția split () există în multe limbaje de programare pentru a împărți șirul în mai multe părți. Nu există nicio funcție split () încorporată în C ++ pentru divizarea șirului, dar există multe modalități multiple în C ++ de a face aceeași sarcină, cum ar fi utilizarea getline () funcţie, strtok () funcție, folosind găsi() și şterge() funcții etc. Utilizările acestor funcții pentru divizarea șirurilor în C ++ au fost explicate în acest tutorial.

Cerință prealabilă

Înainte de a verifica exemplele acestui tutorial, trebuie să verificați dacă compilatorul g ++ este instalat sau nu în sistem. Dacă utilizați Visual Studio Code, atunci instalați extensiile necesare pentru a compila codul sursă C ++ pentru a crea codul executabil. Aici, aplicația Visual Studio Code a fost utilizată pentru a compila și executa codul C ++.







Divizați șirul folosind funcția getline ()

Funcția getline () este utilizată pentru a citi caractere dintr-un șir sau dintr-un conținut de fișier până când se găsește un anumit delimitator sau separator și se stochează fiecare șir de analiză într-o altă variabilă de șir. Funcția va continua sarcina până când întregul conținut al șirului sau fișierului este analizat. Sintaxa acestei funcții este dată mai jos.



Sintaxă:



istream&getline(istream&este, șir&str,chardelim);

Aici, primul parametru, isstream, este obiectul de unde vor fi extrase personajele. Al doilea parametru este o variabilă șir care va stoca valoarea extrasă. Al treilea parametru este utilizat pentru a seta delimitatorul care va fi utilizat pentru extragerea șirului.





Creați un fișier C ++ cu următorul cod pentru a împărți un șir pe baza delimitatorului de spațiu utilizând getline () funcţie. O valoare șir de mai multe cuvinte a fost atribuită unei variabile, iar spațiul a fost folosit ca separator. O variabilă vector a fost declarată pentru a stoca cuvintele extrase. Apoi, bucla „pentru” a folosit pentru a imprima fiecare valoare din matricea vectorială.

// Includeți bibliotecile necesare
#include
#include
#include
#include

intprincipal()
{
// Definiți datele șirului care vor fi împărțite
ore::şirstrData= „Învățați programarea C ++”;
// Definiți datele contante care vor fi prelucrate ca delimitator
const charseparator= '';
// Definiți variabila matrice dinamică a șirurilor
ore::vectoroutputArray;
// Construiți un flux din șir
ore::stringstreamstreamData(strData);
/ *
Declarați variabila șir care va fi utilizată
pentru a stoca date după divizare
* /

ore::şirore;
/ *
Bucla va itera datele împărțite și
introduceți datele în matrice
* /

in timp ce (ore::getline(streamData, val, separator)) {
outputArray.împinge înapoi(ore);
}
// Imprimați datele împărțite
ore::cost << „Șirul original este:” <<strData<<ore::endl;
// Citiți tabloul și imprimați datele împărțite
ore::cost << ' nValorile după împărțirea șirului pe baza spațiului: ' <<ore::endl;
pentru (auto &ore:outputArray) {
ore::cost <<ore<<ore::endl;
}
întoarcere 0;
}

Ieșire:



Următoarea ieșire va apărea după executarea codului de mai sus.

Divizați șirul folosind funcția strtok ()

Funcția strtok () poate fi utilizată pentru a împărți un șir tokenizând partea șirului pe baza unui delimitator. Întoarce un indicator la următorul simbol dacă există; în caz contrar, returnează o valoare NULL. The șir.h fișierul antet este necesar pentru a utiliza această funcție. O buclă va necesita citirea tuturor valorilor divizate din șir. Primul argument conține valoarea șirului care va fi analizată, iar al doilea argument conține delimitatorul care va fi folosit pentru a genera simbolul. Sintaxa acestei funcții este dată mai jos.

Sintaxă:

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

Creați un fișier C ++ cu următorul cod pentru a împărți un șir folosind funcția strtok (). O serie de caractere este definită în codul care conține două puncte („:”) ca separator. Apoi, strtok () funcția este apelată cu valoarea șirului și delimitatorul pentru a genera primul token. „ in timp ce 'Bucla este definită pentru a genera celelalte jetoane și valorile jetonului până la NUL valoarea este găsită.

// Includeți bibliotecile necesare
#include
#include

intprincipal()
{
// Declarați o serie de caractere
charstrArray[] = „Mehrab Hossain: IT Professional: [email protected]: +8801726783423”;
// Returnează prima valoare a simbolului pe baza „:”
char *tokenValue= strtok(strArray,':');
// Inițializați variabila contor
inttejghea= 1;
/ *
Iterează bucla pentru a imprima valoarea jetonului
și împărțiți restul de date șir pentru a obține
următoarea valoare simbolică
* /

in timp ce (tokenValue!= NUL)
{
dacă(tejghea== 1)
printf('Nume:% s n', tokenValue);
altceva dacă(tejghea== 2)
printf('Ocupație:% s n', tokenValue);
altceva dacă(tejghea== 3)
printf('E-mail:% s n', tokenValue);
altceva
printf('Nr. Mobil:% s n', tokenValue);
tokenValue= strtok(NUL,':');
tejghea++;
}
întoarcere 0;
}

Ieșire:

Următoarea ieșire va apărea după executarea codului de mai sus.

Divizați șirul folosind funcțiile find () și erase ()

Șirul poate fi împărțit în C ++ utilizând funcțiile find () și erase (). Creați un fișier C ++ cu următorul cod pentru a verifica utilizările funcțiilor find () și ștergere () pentru a împărți o valoare șir pe baza unui anumit delimitator. Valoarea jetonului este generată prin găsirea poziției delimitatorului utilizând funcția find (), iar valoarea jetonului va fi stocată după eliminarea delimitatorului utilizând funcția erase (). Această sarcină va fi repetată până când întregul conținut al șirului este analizat. Apoi, valorile matricei vectoriale vor fi tipărite.

// Includeți bibliotecile necesare
#include
#include
#include

intprincipal(){
// Definiți șirul
ore::şirstringData= „Bangladesh și Japonia și Germania și Brazilia”;
// Definiți separatorul
ore::şirseparator= 'și';
// Declarați variabila vectorială
ore::vectorțară{};
// Declarați variabila întreagă
intpoziţie;
// Declarați variabila șir
ore::şiroutstr, token;

/ *
Împarte șirul folosind funcția substr ()
și adăugarea cuvântului împărțit în vector
* /

in timp ce ((poziţie=stringData.găsi(separator)) !=ore::şir::npos) {
jeton=stringData.substr(0, poziție);
// Eliminați spațiul suplimentar din partea din față a șirului despicat
țară.împinge înapoi(jeton.şterge(0, simbol.find_first_not_of('')));
stringData.şterge(0, poziție+separator.lungime());
}
// Imprimați toate cuvintele împărțite, cu excepția ultimului
pentru (const auto &outstr:țară) {
ore::cost <<outstr<<ore::endl;
}
// Imprimați ultimul cuvânt împărțit
ore::cost <<stringData.şterge(0, stringData.find_first_not_of('')) <<ore::endl;
întoarcere 0;
}

Ieșire:

Următoarea ieșire va apărea după executarea codului de mai sus.

Concluzie

Trei moduri diferite de a împărți un șir în C ++ au fost explicate în acest tutorial utilizând exemple simple pentru a ajuta noii utilizatori python să efectueze cu ușurință operația de împărțire în C ++.