Kako razdeliti niz v C ++

How Split String C



Delo s podatki o nizih je bistveni del vsakega programskega jezika. Včasih moramo podatke nizov razdeliti za namene programiranja. Funkcija split () obstaja v mnogih programskih jezikih za razdelitev niza na več delov. V C ++ ni vgrajene funkcije split () za razdelitev niza, vendar v C ++ obstaja več načinov za isto nalogo, na primer uporaba getline () funkcijo, strtok () funkcijo, z uporabo najti() in izbriši () funkcije itd. V teh vadnicah so bile razložene uporabe teh funkcij za razdelitev nizov v C ++.

Predpogoj

Preden preverite primere te vadnice, morate preveriti, ali je prevajalnik g ++ nameščen ali ne v sistemu. Če uporabljate Visual Studio Code, namestite potrebne razširitve za sestavljanje izvorne kode C ++ za ustvarjanje izvedljive kode. Tu je bila aplikacija Visual Studio Code uporabljena za sestavljanje in izvajanje kode C ++.







Razdelite niz s funkcijo getline ()

Funkcija getline () se uporablja za branje znakov iz niza ali vsebine datoteke, dokler se ne najde določen razmejevalnik ali ločilo, in shrani vsak niz razčlenitve v drugo spremenljivko niza. Funkcija bo nadaljevala nalogo, dokler ni razčlenjena celotna vsebina niza ali datoteke. Sintaksa te funkcije je podana spodaj.



Sintaksa:



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

Tu je prvi parameter, isstream, je predmet, od koder bodo črpani znaki. Drugi parameter je spremenljivka niza, ki bo shranila izvlečeno vrednost. Tretji parameter se uporablja za nastavitev razmejevalnika, ki bo uporabljen za ekstrahiranje niza.





Ustvarite datoteko C ++ z naslednjo kodo, da razdelite niz na podlagi ločila prostora s pomočjo getline () funkcijo. Vrednostni niz več besed je bil dodeljen spremenljivki, prostor pa je bil uporabljen kot ločilo. Za shranjevanje izvlečenih besed je bila razglašena vektorska spremenljivka. Nato je zanka 'for' natisnila vsako vrednost iz vektorske matrike.

// Vključi potrebne knjižnice
#vključi
#vključi
#vključi
#vključi

intglavni()
{
// Določimo niz podatkov, ki bodo razdeljeni
ure::vrvicastrData= 'Naučite se programiranja C ++';
// Določimo podatke o vsebini, ki bodo delovali kot ločila
const charseparator= '';
// Določimo spremenljivko dinamičnega niza nizov
ure::vektoroutputArray;
// Konstruirajte tok iz niza
ure::stringstreamtokData(strData);
/ *
Razglasite spremenljivko niza, ki bo uporabljena
za shranjevanje podatkov po razdelitvi
* /

ure::vrvicaure;
/ *
Zanka bo ponavljala razdeljene podatke in
vnesite podatke v matriko
* /

medtem (ure::getline(tokData, val, separator)) {
outputArray.porini nazaj(ure);
}
// Natisnite razdeljene podatke
ure::stroški << 'Izvirni niz je:' <<strData<<ure::endl;
// Preberite matriko in natisnite razdeljene podatke
ure::stroški << ' nVrednosti po razdelitvi niza glede na presledek: ' <<ure::endl;
za (samodejno &ure:outputArray) {
ure::stroški <<ure<<ure::endl;
}
vrnitev 0;
}

Izhod:



Po izvedbi zgornje kode se prikaže naslednji izhod.

Razdelite niz s funkcijo strtok ()

Funkcijo strtok () lahko uporabite za razdelitev niza z označevanjem dela niza na podlagi razmejevalnika. Vrne kazalec na naslednji žeton, če ta obstaja; v nasprotnem primeru vrne vrednost NULL. The niz.h za uporabo te funkcije je potrebna datoteka glave. Zanka bo zahtevala branje vseh razcepljenih vrednosti iz niza. Prvi argument vsebuje vrednost niza, ki bo razčlenjena, drugi argument pa ločilo, ki bo uporabljeno za ustvarjanje žetona. Sintaksa te funkcije je podana spodaj.

Sintaksa:

char * strtok ( char *str,const char *ločila);

Ustvarite datoteko C ++ z naslednjo kodo, da razdelite niz s funkcijo strtok (). Niz znakov je v kodi opredeljen z dvopičjem (‘:’) kot ločevalnikom. Nato, strtok () funkcija se pokliče z vrednostjo niza in ločilom za ustvarjanje prvega žetona. The ‘ medtem ’Zanka je definirana za ustvarjanje drugih žetonov in vrednosti žetonov do NIČ vrednost je najdena.

// Vključi potrebne knjižnice
#vključi
#vključi

intglavni()
{
// Razglasi niz znakov
charstrArray[] = 'Mehrab Hossain: IT strokovnjak: [zaščiteno po e -pošti]: +8801726783423';
// Vrne prvo vrednost žetona na podlagi ':'
char *tokenValue= strtok(strArray,':');
// Inicializiraj spremenljivko števec
intštevec= 1;
/ *
Ponovite zanko, da natisnete vrednost žetona
in razdelite preostale podatke niza, da jih dobite
naslednja vrednost žetona
* /

medtem (tokenValue!= NIČ)
{
če(števec== 1)
printf('Ime: %s n', tokenValue);
drugače če(števec== 2)
printf('Poklic: %s n', tokenValue);
drugače če(števec== 3)
printf('E -pošta: %s n', tokenValue);
drugače
printf('Mobilna št.: %S n', tokenValue);
tokenValue= strtok(NIČ,':');
števec++;
}
vrnitev 0;
}

Izhod:

Po izvedbi zgornje kode se prikaže naslednji izhod.

Niz razdelite s funkcijami find () in erase ()

Niz je mogoče v C ++ razdeliti s funkcijami find () in erase (). Ustvarite datoteko C ++ z naslednjo kodo, da preverite uporabo funkcij find () in erase () za razdelitev vrednosti niza na podlagi določenega ločila. Vrednost žetona se ustvari z iskanjem položaja razmejevalnika s funkcijo find (), vrednost žetona pa se shrani po odstranitvi ločilnika s funkcijo erase (). Ta naloga se bo ponavljala, dokler ni razčlenjena celotna vsebina niza. Nato bodo natisnjene vrednosti vektorske matrike.

// Vključi potrebne knjižnice
#vključi
#vključi
#vključi

intglavni(){
// Določimo niz
ure::vrvicastringData= 'Bangladeš in Japonska ter Nemčija in Brazilija';
// Določimo ločilo
ure::vrvicaseparator= 'in';
// Razglasimo vektorsko spremenljivko
ure::vektordržava{};
// Razglasi celoštevilsko spremenljivko
intpoložaj;
// Razglasimo spremenljivko niza
ure::vrvicaoutstr, žeton;

/ *
Niz razdelite s funkcijo substr ()
in dodajanje razdeljene besede v vektor
* /

medtem ((položaj=stringData.najti(separator)) !=ure::vrvica::npos) {
žeton=stringData.substr(0, položaj);
// Odstranimo dodaten prostor s sprednje strani razcepljenega niza
država.porini nazaj(žeton.izbrisati(0, žeton.Najdi_prvega_ne_na_('')));
stringData.izbrisati(0, položaj+separator.dolžino());
}
// Natisni vso razdeljeno besedo, razen zadnje
za (const samodejno &outstr:država) {
ure::stroški <<outstr<<ure::endl;
}
// Natisni zadnjo razdeljeno besedo
ure::stroški <<stringData.izbrisati(0, stringData.Najdi_prvega_ne_na_('')) <<ure::endl;
vrnitev 0;
}

Izhod:

Po izvedbi zgornje kode se prikaže naslednji izhod.

Zaključek

Trije različni načini razdelitve niza v C ++ so bili razloženi v tej vadnici z uporabo preprostih primerov, ki novim uporabnikom pythona pomagajo pri enostavnem izvajanju deljenja v C ++.