Hvordan dele streng i C ++

How Split String C



Å jobbe med strengdata er en vesentlig del av ethvert programmeringsspråk. Noen ganger må vi dele strengdataene for programmeringsformål. Split () -funksjonen finnes på mange programmeringsspråk for å dele strengen i flere deler. Det er ingen innebygd split () -funksjon i C ++ for å dele streng, men det finnes mange flere måter i C ++ for å utføre den samme oppgaven, for eksempel å bruke getline () funksjon, strtok () funksjon, ved hjelp av finne() og viske ut() funksjoner, etc. Bruken av disse funksjonene for å dele strenger i C ++ har blitt forklart i denne opplæringen.

Forutsetning

Før du sjekker eksemplene på denne opplæringen, må du kontrollere at g ++ - kompilatoren er installert eller ikke i systemet. Hvis du bruker Visual Studio Code, må du installere de nødvendige utvidelsene for å kompilere C ++ - kildekoden for å lage den kjørbare koden. Her har Visual Studio Code -applikasjonen blitt brukt til å kompilere og utføre C ++ - koden.







Del streng med funksjonen getline ()

Getline () -funksjonen brukes til å lese tegn fra en streng eller et filinnhold til en bestemt skilletegn eller separator er funnet og lagre hver analysestreng i en annen strengvariabel. Funksjonen fortsetter oppgaven til hele innholdet i strengen eller filen er analysert. Syntaksen til denne funksjonen er gitt nedenfor.



Syntaks:



istream&getline(istream&er, streng&str,røyeavgrense);

Her er den første parameteren, isstream, er objektet hvor tegnene skal trekkes ut. Den andre parameteren er en strengvariabel som lagrer den ekstraherte verdien. Den tredje parameteren brukes til å angi skilletegn som skal brukes for å trekke ut strengen.





Lag en C ++ - fil med følgende kode for å dele en streng basert på mellomromstegn ved å bruke getline () funksjon. En strengverdi på flere ord er tilordnet en variabel, og mellomrom har blitt brukt som separator. En vektorvariabel er erklært for å lagre de ekstraherte ordene. Deretter har 'for' -løkken brukt til å skrive ut hver verdi fra vektormatrisen.

// Inkluder nødvendige biblioteker
#inkludere
#inkludere
#inkludere
#inkludere

inthoved-()
{
// Definer strengdata som skal deles
timer::strengstrData= 'Lær C ++ programmering';
// Definer innholdsdata som skal brukes som avgrensning
konst røyeseparator= '';
// Definer den dynamiske matrisvariabelen for strenger
timer::vektoroutputArray;
// Konstruer en strøm fra strengen
timer::stringstreamstreamData(strData);
/ *
Angi strengvariabel som skal brukes
å lagre data etter deling
* /

timer::strengtimer;
/ *
Løkken vil gjenta de splittede dataene og
sett inn dataene i matrisen
* /

samtidig som (timer::getline(streamData, val, separator)) {
outputArray.push_back(timer);
}
// Skriv ut delte data
timer::koste << 'Den originale strengen er:' <<strData<<timer::endl;
// Les matrisen og skriv ut delte data
timer::koste << ' nVerdiene etter deling av strengen basert på mellomrom: ' <<timer::endl;
til (auto &timer:outputArray) {
timer::koste <<timer<<timer::endl;
}
komme tilbake 0;
}

Produksjon:



Følgende utdata vises etter at koden ovenfor er utført.

Del streng med funksjonen strtok ()

Strtok () -funksjonen kan brukes til å dele en streng ved å tokenisere delen av strengen basert på en skilletegn. Den returnerer en peker til neste token hvis den eksisterer; Ellers returnerer den en NULL -verdi. De streng.h header -fil er nødvendig for å bruke denne funksjonen. En sløyfe vil kreve å lese alle delte verdier fra strengen. Det første argumentet inneholder strengverdien som skal analyseres, og det andre argumentet inneholder skilletegnet som skal brukes til å generere tokenet. Syntaksen til denne funksjonen er gitt nedenfor.

Syntaks:

røye * strtok ( røye *str,konst røye *avgrensere);

Lag en C ++ - fil med følgende kode for å dele en streng ved å bruke strtok () - funksjonen. En rekke tegn er definert i koden som inneholder et kolon (‘:’) som separatoren. Deretter vil strtok () funksjon kalles med strengverdien og skilletegnet for å generere det første tokenet. Den ' samtidig som ’Loop er definert for å generere de andre tokensene og tokenverdiene til NULL verdi er funnet.

// Inkluder nødvendige biblioteker
#inkludere
#inkludere

inthoved-()
{
// Deklarere en rekke tegn
røyestrArray[] = 'Mehrab Hossain: IT Professional: [email protected]: +8801726783423';
// Returner den første tokenverdien basert på ':'
røye *tokenValue= strtok(strArray,':');
// Initialiser tellervariabelen
intdisk= 1;
/ *
Iterer løkken for å skrive ut tokenverdien
og del de resterende strengdataene for å få
den neste token -verdien
* /

samtidig som (tokenValue!= NULL)
{
hvis(disk== 1)
printf('Navn: %s n', tokenValue);
ellers hvis(disk== 2)
printf('Yrke: %s n', tokenValue);
ellers hvis(disk== 3)
printf('E -post: %s n', tokenValue);
ellers
printf('Mobilnummer: %s n', tokenValue);
tokenValue= strtok(NULL,':');
disk++;
}
komme tilbake 0;
}

Produksjon:

Følgende utdata vises etter at koden ovenfor er utført.

Del strengen ved hjelp av finn () og slett () funksjoner

Strengen kan deles i C ++ ved å bruke funksjonene find () og slette (). Lag en C ++ - fil med følgende kode for å kontrollere bruken av funksjonene find () og slette () for å dele en strengverdi basert på en bestemt skilletegn. Tokenverdien genereres ved å finne avgrensningsposisjonen ved å bruke funksjonen find (), og tokenverdien lagres etter at skilletegnet er fjernet ved å bruke funksjonen slette (). Denne oppgaven vil gjentas til hele innholdet i strengen er analysert. Deretter skrives verdiene til vektormatrisen ut.

// Inkluder nødvendige biblioteker
#inkludere
#inkludere
#inkludere

inthoved-(){
// Definer strengen
timer::strengstringData= 'Bangladesh og Japan og Tyskland og Brasil';
// Definer skilletegnet
timer::strengseparator= 'og';
// Deklarer vektorvariabelen
timer::vektorland{};
// Deklarer heltallsvariabel
intposisjon;
// Deklarere strengvariabel
timer::strengoutstr, token;

/ *
Del strengen ved hjelp av substra () -funksjonen
og legge til det splittede ordet i vektoren
* /

samtidig som ((posisjon=stringData.finne(separator)) !=timer::streng::npos) {
token=stringData.substr(0, posisjon);
// Fjern den ekstra plassen fra forsiden av den splittede strengen
land.push_back(token.viske ut(0, token.finn_forste_ikke_av('')));
stringData.viske ut(0, posisjon+separator.lengde());
}
// Skriv ut alt splittet ord bortsett fra det siste
til (konst auto &outstr:land) {
timer::koste <<outstr<<timer::endl;
}
// Skriv ut det siste splittede ordet
timer::koste <<stringData.viske ut(0, stringData.finn_forste_ikke_av('')) <<timer::endl;
komme tilbake 0;
}

Produksjon:

Følgende utdata vises etter at koden ovenfor er utført.

Konklusjon

Tre forskjellige måter å dele en streng i C ++ har blitt forklart i denne opplæringen ved å bruke enkle eksempler for å hjelpe de nye python -brukerne til å utføre delingsoperasjonen enkelt i C ++.