Sådan deles streng i C ++

How Split String C



Arbejde med strengedata er en væsentlig del af ethvert programmeringssprog. Nogle gange er vi nødt til at opdele strengdataene til programmeringsformål. Funktionen split () findes på mange programmeringssprog for at opdele strengen i flere dele. Der er ingen indbygget split () -funktion i C ++ til opdeling af streng, men der findes mange flere måder i C ++ til at udføre den samme opgave, f.eks. getline () fungere, strtok () funktion, ved hjælp af Find() og slette() funktioner osv. Brugen af ​​disse funktioner til at opdele strenge i C ++ er blevet forklaret i denne vejledning.

Forudsætning

Inden du kontrollerer eksemplerne på denne vejledning, skal du kontrollere, at g ++ - kompilatoren er installeret eller ikke i systemet. Hvis du bruger Visual Studio Code, skal du installere de nødvendige udvidelser for at kompilere C ++ - kildekoden for at oprette den eksekverbare kode. Her er Visual Studio Code -applikationen blevet brugt til at kompilere og eksekvere C ++ - koden.







Opdel streng med funktionen getline ()

Funktionen getline () bruges til at læse tegn fra en streng eller et filindhold, indtil der findes en bestemt afgrænser eller separator og gemme hver parsestreng i en anden strengvariabel. Funktionen fortsætter opgaven, indtil det fulde indhold i strengen eller filen er analyseret. Syntaksen for denne funktion er angivet nedenfor.



Syntaks:



istream&getline(istream&er, snor&str,forkælelseafgrænse);

Her er den første parameter, isstream, er objektet, hvorfra tegnene skal udtrækkes. Den anden parameter er en strengvariabel, der gemmer den ekstraherede værdi. Den tredje parameter bruges til at indstille den afgrænser, der skal bruges til at udtrække strengen.





Opret en C ++ - fil med følgende kode for at opdele en streng baseret på mellemrumsafgrænseren ved hjælp af getline () fungere. En strengværdi på flere ord er blevet tildelt til en variabel, og mellemrum er blevet brugt som separator. En vektorvariabel er blevet erklæret for at gemme de ekstraherede ord. Dernæst har 'for' -sløjfen brugt til at udskrive hver værdi fra vektorarrayet.

// Inkluder nødvendige biblioteker
#omfatte
#omfatte
#omfatte
#omfatte

intvigtigste()
{
// Definer strengdata, der skal deles
timer::snorstrData= 'Lær C ++ programmering';
// Definer indholdsdata, der vil blive arbejdet som afgrænser
konst forkælelseseparator= '';
// Definer den dynamiske array -variabel for strenge
timer::vektoroutputArray;
// Konstruer en strøm fra strengen
timer::strengstrømstreamData(strData);
/ *
Angiv strengvariabel, der skal bruges
at gemme data efter split
* /

timer::snortimer;
/ *
Sløjfen gentager de opdelte data og
indsæt dataene i arrayet
* /

mens (timer::getline(streamData, val, separator)) {
outputArray.skub tilbage(timer);
}
// Udskriv de opdelte data
timer::koste << 'Den originale streng er:' <<strData<<timer::endl;
// Læs arrayet, og udskriv de opdelte data
timer::koste << ' nVærdierne efter opdeling af strengen baseret på mellemrum: ' <<timer::endl;
til (auto &timer:outputArray) {
timer::koste <<timer<<timer::endl;
}
Vend tilbage 0;
}

Produktion:



Følgende output vises efter udførelse af ovenstående kode.

Opdel streng med funktionen strtok ()

Strtok () -funktionen kan bruges til at opdele en streng ved at tokenisere den del af strengen, der er baseret på en afgrænser. Det returnerer en markør til det næste token, hvis det findes; ellers returnerer den en NULL -værdi. Det streng.h header -fil er påkrævet for at bruge denne funktion. En sløjfe vil kræve at læse alle opdelte værdier fra strengen. Det første argument indeholder den strengværdi, der skal analyseres, og det andet argument indeholder den afgrænsning, der skal bruges til at generere tokenet. Syntaksen for denne funktion er angivet nedenfor.

Syntaks:

forkælelse * strtok ( forkælelse *str,konst forkælelse *afgrænsere);

Opret en C ++ - fil med følgende kode for at opdele en streng ved hjælp af funktionen strtok (). En række tegn er defineret i koden, der indeholder et kolon (‘:’) som separatoren. Dernæst strtok () funktion kaldes med strengværdien og afgrænseren for at generere det første token. Det ' mens 'Loop er defineret til at generere de andre tokens og tokenværdierne indtil NUL værdi findes.

// Inkluder nødvendige biblioteker
#omfatte
#omfatte

intvigtigste()
{
// Angiv en række tegn
forkælelsestrArray[] = 'Mehrab Hossain: IT Professional: [email protected]: +8801726783423';
// Returner den første tokenværdi baseret på ':'
forkælelse *tokenValue= strtok(strArray,':');
// Initialiser tællervariablen
inttæller= 1;
/ *
Iterér sløjfen for at udskrive tokenværdien
og opdel de resterende strengdata for at få
den næste tokenværdi
* /

mens (tokenValue!= NUL)
{
hvis(tæller== 1)
printf('Navn: %s n', tokenValue);
andet hvis(tæller== 2)
printf('Beskæftigelse: %s n', tokenValue);
andet hvis(tæller== 3)
printf('E -mail: %s n', tokenValue);
andet
printf('Mobilnummer: %s n', tokenValue);
tokenValue= strtok(NUL,':');
tæller++;
}
Vend tilbage 0;
}

Produktion:

Følgende output vises efter udførelse af ovenstående kode.

Opdel streng ved hjælp af find () og slet () funktioner

Strengen kan opdeles i C ++ ved hjælp af find () og slet () funktioner. Opret en C ++ - fil med følgende kode for at kontrollere anvendelserne af find () og slet () funktioner for at opdele en strengværdi baseret på en bestemt afgrænser. Tokenværdien genereres ved at finde afgrænsningspositionen ved hjælp af funktionen find (), og tokenværdien gemmes efter fjernelse af afgrænseren ved hjælp af slette () -funktionen. Denne opgave gentages, indtil det fulde indhold af strengen er analyseret. Derefter udskrives værdierne for vektorarrayet.

// Inkluder nødvendige biblioteker
#omfatte
#omfatte
#omfatte

intvigtigste(){
// Definer strengen
timer::snorstringData= 'Bangladesh og Japan og Tyskland og Brasilien';
// Definer separatoren
timer::snorseparator= 'og';
// Deklarér vektorvariablen
timer::vektorLand{};
// Deklarer heltalsvariabel
intposition;
// Deklarere strengvariabel
timer::snoroutstr, token;

/ *
Opdel strengen ved hjælp af funktionen substr ()
og tilføjelse af det opdelte ord i vektoren
* /

mens ((position=stringData.Find(separator)) !=timer::snor::npos) {
polet=stringData.substr(0, position);
// Fjern det ekstra mellemrum fra forsiden af ​​den opdelte snor
Land.skub tilbage(polet.slette(0, polet.find_first_ikke_af('')));
stringData.slette(0, position+separator.længde());
}
// Udskriv alt splittet ord undtagen det sidste
til (konst auto &outstr:Land) {
timer::koste <<outstr<<timer::endl;
}
// Udskriv det sidste splittede ord
timer::koste <<stringData.slette(0, stringData.find_first_ikke_af('')) <<timer::endl;
Vend tilbage 0;
}

Produktion:

Følgende output vises efter udførelse af ovenstående kode.

Konklusion

Tre forskellige måder at opdele en streng i C ++ er blevet forklaret i denne vejledning ved hjælp af enkle eksempler til at hjælpe de nye pythonbrugere med let at udføre splitoperationen i C ++.