Kako podijeliti niz u C ++

How Split String C



Rad sa nizom podataka bitan je dio svakog programskog jezika. Ponekad moramo podijeliti nizove podataka u svrhu programiranja. Funkcija split () postoji u mnogim programskim jezicima za podjelu niza na više dijelova. Ne postoji ugrađena funkcija split () u C ++ za podjelu niza, ali postoji mnogo više načina u C ++ za obavljanje istog zadatka, poput korištenja getline () funkcija, strtok () funkciju, koristeći pronaći() i brisanje () funkcije itd. Upotreba ovih funkcija za podjelu nizova u C ++ objašnjena je u ovom vodiču.

Preduvjet

Prije nego provjerite primjere ovog vodiča, morate provjeriti je li g ++ kompajler instaliran ili nije u sustavu. Ako koristite Visual Studio Code, instalirajte potrebna proširenja za sastavljanje izvornog koda C ++ za stvaranje izvršnog koda. Ovdje se aplikacija Visual Studio Code koristila za sastavljanje i izvršavanje koda C ++.







Podijelite niz pomoću funkcije getline ()

Funkcija getline () koristi se za čitanje znakova iz niza ili sadržaja datoteke sve dok se ne pronađe određeni graničnik ili separator i spremi svaki niz raščlanjivanja u drugu varijablu niza. Funkcija će nastaviti zadatak sve dok se ne raščlani cijeli sadržaj niza ili datoteke. Sintaksa ove funkcije navedena je u nastavku.



Sintaksa:



istream&getline(istream&je, niz&str,chardelim);

Ovdje je prvi parametar, je tok, je objekt iz kojeg će se izvući znakovi. Drugi parametar je nizova varijabla koja će pohraniti izdvojenu vrijednost. Treći parametar koristi se za postavljanje graničnika koji će se koristiti za izdvajanje niza.





Napravite C ++ datoteku sa sljedećim kodom da biste podijelili niz na temelju razdjelnika prostora pomoću getline () funkcija. Vrijednost niza više riječi dodijeljena je varijabli, a razmak je korišten kao separator. Proglašena je vektorska varijabla za spremanje izdvojenih riječi. Zatim se petlja ‘for’ koristi za ispis svake vrijednosti iz vektorskog niza.

// Uključuje potrebne knjižnice
#uključi
#uključi
#uključi
#uključi

intglavni()
{
// Definiranje podataka niza koji će se podijeliti
sati::nizstrData= 'Naučite programiranje na C ++';
// Definiraj podatke o sadržaju koji će se koristiti kao graničnik
konst charseparator= '';
// Definiranje varijable nizova dinamičkog niza
sati::vektoroutputArray;
// Konstruirajte tok iz niza
sati::stringstreamstreamData(strData);
/ *
Deklarirajte niz varijable koja će se koristiti
za pohranu podataka nakon podjele
* /

sati::nizsati;
/ *
Petlja će ponoviti podijeljene podatke i
umetnite podatke u polje
* /

dok (sati::getline(streamData, val, separator)) {
outputArray.odgurnuti(sati);
}
// Ispis podijeljenih podataka
sati::trošak << 'Izvorni niz je:' <<strData<<sati::endl;
// Pročitajte niz i ispišite podijeljene podatke
sati::trošak << ' nVrijednosti nakon podjele niza na temelju razmaka: ' <<sati::endl;
za (auto &sati:outputArray) {
sati::trošak <<sati<<sati::endl;
}
povratak 0;
}

Izlaz:



Sljedeći izlaz će se pojaviti nakon izvršavanja gornjeg koda.

Podijelite niz pomoću funkcije strtok ()

Funkcija strtok () može se koristiti za razdvajanje niza označavanjem dijela niza na temelju razdjelnika. Vraća pokazivač na sljedeći token ako postoji; u suprotnom, vraća NULL vrijednost. The niz.h Zaglavlje je potrebno za korištenje ove funkcije. Petlja će zahtijevati čitanje svih podijeljenih vrijednosti iz niza. Prvi argument sadrži vrijednost niza koja će se raščlaniti, a drugi argument sadrži graničnik koji će se koristiti za generiranje tokena. Sintaksa ove funkcije navedena je u nastavku.

Sintaksa:

char * strtok ( char *str,konst char *graničnici);

Napravite C ++ datoteku sa sljedećim kodom da biste podijelili niz pomoću funkcije strtok (). Niz znakova definiran je u kodu koji sadrži dvotočku (‘:’) kao separator. Zatim, strtok () funkcija se poziva s vrijednošću niza i graničnikom za generiranje prvog tokena. ‘ dok ’Petlja je definirana za generiranje ostalih tokena i vrijednosti tokena do NULL vrijednost je pronađena.

// Uključuje potrebne knjižnice
#uključi
#uključi

intglavni()
{
// Deklarirati niz znakova
charstrArray[] = 'Mehrab Hossain: IT stručnjak: [zaštićena e -pošta]: +8801726783423';
// Vraća prvu vrijednost tokena na temelju ':'
char *tokenValue= strtok(strArray,':');
// Inicijaliziraj varijablu brojača
intbrojač= 1;
/ *
Ponovite petlju za ispis vrijednosti žetona
i podijelite preostale nizove podataka da biste dobili
vrijednost sljedećeg tokena
* /

dok (tokenValue!= NULL)
{
ako(brojač== 1)
printf('Ime: %s n', tokenValue);
drugo ako(brojač== 2)
printf('Zanimanje: %s n', tokenValue);
drugo ako(brojač== 3)
printf('E -pošta: %s n', tokenValue);
drugo
printf('Broj mobilnog telefona: %s n', tokenValue);
tokenValue= strtok(NULL,':');
brojač++;
}
povratak 0;
}

Izlaz:

Sljedeći izlaz će se pojaviti nakon izvršavanja gornjeg koda.

Podijelite niz pomoću funkcija find () i erase ()

Niz se može podijeliti u C ++ pomoću funkcija find () i erase (). Napravite C ++ datoteku sa sljedećim kodom kako biste provjerili upotrebu funkcija find () i erase () za podjelu vrijednosti niza na temelju određenog graničnika. Vrijednost tokena generira se pronalaženjem razdjelnika pomoću funkcije find (), a vrijednost tokena bit će pohranjena nakon uklanjanja graničnika pomoću funkcije erase (). Ovaj će se zadatak ponavljati sve dok se ne analizira cijeli sadržaj niza. Zatim će se ispisati vrijednosti vektorskog niza.

// Uključuje potrebne knjižnice
#uključi
#uključi
#uključi

intglavni(){
// Definiranje niza
sati::nizstringData= 'Bangladeš i Japan te Njemačka i Brazil';
// Definiraj separator
sati::nizseparator= 'i';
// Deklarirati vektorsku varijablu
sati::vektorzemlja{};
// Deklariraj cjelobrojnu varijablu
intpoložaj;
// Deklarira varijablu niza
sati::nizisticanje, žeton;

/ *
Podijelite niz pomoću funkcije substr ()
i dodavanje podijeljene riječi u vektor
* /

dok ((položaj=stringData.pronaći(separator)) !=sati::niz::npos) {
znak=stringData.podstr(0, položaj);
// Uklonite dodatni prostor s prednje strane podijeljenog niza
zemlja.odgurnuti(znak.izbrisati(0, žeton.pronađi_prvi_ne_od('')));
stringData.izbrisati(0, položaj+separator.duljina());
}
// Ispis svih podijeljenih riječi osim posljednje
za (konst auto &isturen:zemlja) {
sati::trošak <<isturen<<sati::endl;
}
// Ispis posljednje podijeljene riječi
sati::trošak <<stringData.izbrisati(0, stringData.pronađi_prvi_ne_od('')) <<sati::endl;
povratak 0;
}

Izlaz:

Sljedeći izlaz će se pojaviti nakon izvršavanja gornjeg koda.

Zaključak

Tri različita načina podjele niza u C ++ objašnjena su u ovom vodiču pomoću jednostavnih primjera koji će pomoći novim korisnicima pythona da lako izvode operaciju dijeljenja u C ++.