Hur man delar sträng i C ++

How Split String C



Att arbeta med strängdata är en viktig del av alla programmeringsspråk. Ibland måste vi dela strängdata för programmeringsändamål. Split () -funktionen finns på många programmeringsspråk för att dela strängen i flera delar. Det finns ingen inbyggd split () -funktion i C ++ för att dela sträng men det finns många olika sätt i C ++ att utföra samma uppgift, till exempel att använda getline () fungera, strtok () funktion, med hitta() och radera() funktioner etc. Användningen av dessa funktioner för att dela strängar i C ++ har förklarats i denna handledning.

Nödvändig förutsättning

Innan du kontrollerar exemplen på denna handledning måste du kontrollera att g ++ - kompilatorn är installerad eller inte i systemet. Om du använder Visual Studio Code installerar du de nödvändiga tilläggen för att kompilera C ++ - källkoden för att skapa den körbara koden. Här har programmet Visual Studio Code använts för att kompilera och köra C ++ - koden.







Dela sträng med funktionen getline ()

Getline () -funktionen används för att läsa tecken från en sträng eller ett filinnehåll tills en särskild avgränsare eller separator hittas och lagra varje analyssträng i en annan strängvariabel. Funktionen fortsätter uppgiften tills hela innehållet i strängen eller filen har analyserats. Syntaxen för denna funktion ges nedan.



Syntax:



istream&getline(istream&är, sträng&str,rödingavgränsa);

Här är den första parametern, isstream, är objektet varifrån tecknen ska extraheras. Den andra parametern är en strängvariabel som lagrar det extraherade värdet. Den tredje parametern används för att ställa in avgränsaren som ska användas för att extrahera strängen.





Skapa en C ++ - fil med följande kod för att dela en sträng baserad på mellanslagstermineraren med getline () fungera. Ett strängvärde för flera ord har tilldelats en variabel och mellanslag har använts som separator. En vektorvariabel har deklarerats för att lagra de extraherade orden. Därefter har 'för' -slingan använts för att skriva ut varje värde från vektormatrisen.

// Inkludera nödvändiga bibliotek
#omfatta
#omfatta
#omfatta
#omfatta

inthuvud()
{
// Definiera strängdata som ska delas
timmar::strängstrData= 'Lär dig C ++ programmering';
// Definiera innehållsdata som kommer att fungera som avgränsare
konst rödingseparator= '';
// Definiera den dynamiska arrayvariabeln för strängar
timmar::vektoroutputArray;
// Konstruera en ström från strängen
timmar::strängströmstreamData(strData);
/ *
Deklarera strängvariabel som ska användas
att lagra data efter delning
* /

timmar::strängtimmar;
/ *
Slingan kommer att iterera de delade data och
infoga data i matrisen
* /

medan (timmar::getline(streamData, val, separator)) {
outputArray.trycka tillbaka(timmar);
}
// Skriv ut delade data
timmar::kosta << 'Den ursprungliga strängen är:' <<strData<<timmar::endl;
// Läs matrisen och skriv ut delade data
timmar::kosta << ' nVärdena efter delning av strängen baserat på mellanslag: ' <<timmar::endl;
för (bil &timmar:outputArray) {
timmar::kosta <<timmar<<timmar::endl;
}
lämna tillbaka 0;
}

Produktion:



Följande utdata visas efter att koden ovan har körts.

Dela sträng med funktionen strtok ()

Strtok () -funktionen kan användas för att dela en sträng genom att tokenisera delen av strängen baserat på en avgränsare. Den returnerar en pekare till nästa token om den finns; annars returnerar det ett NULL -värde. De string.h header -fil krävs för att använda den här funktionen. En slinga kräver att alla delade värden från strängen läses. Det första argumentet innehåller strängvärdet som kommer att analyseras och det andra argumentet innehåller avgränsaren som ska användas för att generera token. Syntaxen för denna funktion ges nedan.

Syntax:

röding * strtok ( röding *str,konst röding *avgränsare);

Skapa en C ++ - fil med följande kod för att dela en sträng med funktionen strtok (). En rad tecken definieras i koden som innehåller ett kolon (‘:’) som separator. Därefter, strtok () funktion kallas med strängvärdet och avgränsaren för att generera den första token. Den ‘ medan ’Loop definieras för att generera andra tokens och tokenvärden tills NULL värde hittas.

// Inkludera nödvändiga bibliotek
#omfatta
#omfatta

inthuvud()
{
// Deklarera en rad tecken
rödingstrArray[] = 'Mehrab Hossain: IT Professional: [email protected]: +8801726783423';
// Returnera det första tokenvärdet baserat på ':'
röding *tokenValue= strtok(strArray,':');
// Initiera räknevariabeln
intdisken= 1;
/ *
Iterera slingan för att skriva ut tokenvärdet
och dela de återstående strängdata för att få
nästa token -värde
* /

medan (tokenValue!= NULL)
{
om(disken== 1)
printf('Namn: %s n', tokenValue);
annan om(disken== 2)
printf('Yrke: %s n', tokenValue);
annan om(disken== 3)
printf('E -post: %s n', tokenValue);
annan
printf('Mobilnummer: %s n', tokenValue);
tokenValue= strtok(NULL,':');
disken++;
}
lämna tillbaka 0;
}

Produktion:

Följande utdata visas efter att koden ovan har körts.

Dela sträng med hjälp av hitta () och radera () funktioner

Strängen kan delas upp i C ++ med hjälp av funktionerna find () och radera (). Skapa en C ++ - fil med följande kod för att kontrollera användningen av funktionerna find () och radera () för att dela ett strängvärde baserat på en särskild avgränsare. Tokenvärdet genereras genom att hitta avgränsarpositionen med hjälp av funktionen find (), och token -värdet lagras efter att avgränsaren har tagits bort med hjälp av funktionen radera (). Denna uppgift kommer att upprepas tills hela innehållet i strängen har analyserats. Därefter kommer värdena för vektormatrisen att skrivas ut.

// Inkludera nödvändiga bibliotek
#omfatta
#omfatta
#omfatta

inthuvud(){
// Definiera strängen
timmar::strängstringData= 'Bangladesh och Japan och Tyskland och Brasilien';
// Definiera avgränsaren
timmar::strängseparator= 'och';
// Deklarera vektorvariabeln
timmar::vektorLand{};
// Deklarera heltalsvariabel
intplacera;
// Deklarera strängvariabel
timmar::strängoutstr, token;

/ *
Dela strängen med hjälp av substr () -funktionen
och lägga till det delade ordet i vektorn
* /

medan ((placera=stringData.hitta(separator)) !=timmar::sträng::npos) {
tecken=stringData.substr(0, position);
// Ta bort det extra utrymmet från framsidan av den delade strängen
Land.trycka tillbaka(tecken.radera(0, token.hitta_första_inte_av('')));
stringData.radera(0, position+separator.längd());
}
// Skriv ut alla delade ord utom det sista
för (konst bil &outstr:Land) {
timmar::kosta <<outstr<<timmar::endl;
}
// Skriv ut det sista delade ordet
timmar::kosta <<stringData.radera(0, stringData.hitta_första_inte_av('')) <<timmar::endl;
lämna tillbaka 0;
}

Produktion:

Följande utdata visas efter att koden ovan har körts.

Slutsats

Tre olika sätt att dela en sträng i C ++ har förklarats i denna handledning med hjälp av enkla exempel för att hjälpa de nya pythonanvändarna att enkelt utföra delningsoperationen i C ++.