Kuinka jakaa merkkijono C ++: ssa

How Split String C



Jousitietojen käsittely on olennainen osa mitä tahansa ohjelmointikieltä. Joskus meidän on jaettava merkkijonotiedot ohjelmointia varten. Split () -toiminto on olemassa monilla ohjelmointikielillä merkkijonon jakamiseksi useisiin osiin. C ++: ssa ei ole sisäänrakennettua split () -funktiota merkkijonon jakamiseen, mutta C ++: ssa on monia tapoja tehdä sama tehtävä, kuten getline () toiminto, strtok () -toimintoa käyttämällä löytö() ja poista () toiminnot jne. Tässä opetusohjelmassa on selitetty näiden toimintojen käyttö merkkijonojen jakamiseen C ++: ssa.

Edellytys

Ennen kuin tarkistat tämän opetusohjelman esimerkit, sinun on tarkistettava, että g ++ -kääntäjä on asennettu tai ei järjestelmään. Jos käytät Visual Studio Codea, asenna tarvittavat laajennukset C ++ -lähdekoodin kääntämiseksi suoritettavan koodin luomiseksi. Tässä Visual Studio Code -sovellusta on käytetty C ++ -koodin kääntämiseen ja suorittamiseen.







Jaa merkkijono getline () -funktiolla

Getline () -toimintoa käytetään merkkien lukemiseen merkkijonosta tai tiedostosisällöstä, kunnes tietty erotin tai erotin on löydetty, ja tallentaa jokainen jäsennysmerkkijono toiseen merkkijonomuuttujaan. Toiminto jatkaa tehtävää, kunnes merkkijonon tai tiedoston koko sisältö jäsennetään. Tämän toiminnon syntaksi on esitetty alla.



Syntaksi:



virtaa&getline(virtaa&on merkkijono&str,hiiltyärajata);

Tässä ensimmäinen parametri, isstream, on kohde, josta merkit puretaan. Toinen parametri on merkkijonomuuttuja, joka tallentaa uutetun arvon. Kolmatta parametria käytetään asettamaan erotin, jota käytetään merkkijonon purkamiseen.





Luo C ++ -tiedosto seuraavalla koodilla jakaaksesi merkkijonon välilyönnin perusteella getline () toiminto. Muuttujalle on määritetty useiden sanojen merkkijonoarvo ja välilyöntiä on käytetty erottimena. Vektorimuuttuja on ilmoitettu tallentamaan poimitut sanat. Seuraavaksi 'for' -silmukalla on tulostettu jokainen arvo vektoritaulukosta.

// Sisällytä tarvittavat kirjastot
#sisältää
#sisältää
#sisältää
#sisältää

inttärkein()
{
// Määritä jaettavat merkkijonotiedot
tuntia::merkkijonostrData= 'Opi C ++ -ohjelmointi';
// Määrittele raja -aineena käytettävät contant -tiedot
const hiiltyäerotin= '';
// Määritä merkkijonojen dynaamisen taulukon muuttuja
tuntia::vektorioutputArray;
// Luo virta merkkijonosta
tuntia::merkkijonostreamData(strData);
/ *
Ilmoita käytettävä merkkijonomuuttuja
tietojen tallentamiseen jakamisen jälkeen
* /

tuntia::merkkijonotuntia;
/ *
Silmukka toistaa jaetut tiedot ja
lisää tiedot taulukkoon
* /

sillä aikaa (tuntia::getline(streamData, val, erotin)) {
outputArray.työnnä takaisin(tuntia);
}
// Tulosta jaetut tiedot
tuntia::kustannus << 'Alkuperäinen merkkijono on:' <<strData<<tuntia::endl;
// Lue taulukko ja tulosta jaetut tiedot
tuntia::kustannus << '' nArvot merkkijonon jakamisen jälkeen avaruuden perusteella: ' <<tuntia::endl;
varten (auto &tuntia:outputArray) {
tuntia::kustannus <<tuntia<<tuntia::endl;
}
palata 0;
}

Lähtö:



Seuraava tulos tulee näkyviin yllä olevan koodin suorittamisen jälkeen.

Jaa merkkijono strtok () -funktiolla

Strtok () -funktiota voidaan käyttää merkkijonon jakamiseen merkitsemällä merkkijonon osa erottimen perusteella. Se palauttaa osoittimen seuraavaan merkkiin, jos sellainen on; muuten se palauttaa NULL -arvon. The merkkijono. h otsikkotiedostoa tarvitaan tämän toiminnon käyttämiseksi. Silmukka vaatii kaikkien jaettujen arvojen lukemisen merkkijonosta. Ensimmäinen argumentti sisältää jäsennettävän merkkijonon arvon ja toinen argumentti sisältää erottimen, jota käytetään tunnuksen luomiseen. Tämän toiminnon syntaksi on esitetty alla.

Syntaksi:

hiiltyä * strtok ( hiiltyä *str,const hiiltyä *erottimet);

Luo C ++ -tiedosto seuraavalla koodilla jakaaksesi merkkijonon käyttämällä strtok () -funktiota. Koodissa on merkistö, joka sisältää kaksoispisteen (’:’) erottimena. Seuraavaksi, strtok () -funktiota kutsutaan merkkijonon arvolla ja erotimella ensimmäisen merkin luomiseksi. ' sillä aikaa -Silmukka on määritetty tuottamaan muut tunnukset ja tunnuksen arvot, kunnes TYHJÄ arvo löytyy.

// Sisällytä tarvittavat kirjastot
#sisältää
#sisältää

inttärkein()
{
// Ilmoita joukko merkkejä
hiiltyästrArray[] = 'Mehrab Hossain: IT -ammattilainen: [sähköposti suojattu]: +8801726783423';
// Palauttaa ensimmäisen tunnuksen arvon ':' perusteella
hiiltyä *tokenValue= strtok(strArray,':');
// Alusta laskurin muuttuja
intlaskuri= 1;
/ *
Tulosta tunnuksen arvo toistamalla silmukkaa
ja jaa loput merkkijonotiedot saadaksesi
seuraava merkkiarvo
* /

sillä aikaa (tokenValue!= TYHJÄ)
{
jos(laskuri== 1)
printf('Nimi: %s n'', tokenValue);
muu jos(laskuri== 2)
printf('Ammatti: %s n'', tokenValue);
muu jos(laskuri== 3)
printf('Sähköposti: %s n'', tokenValue);
muu
printf('Matkapuhelinnumero: %s n'', tokenValue);
tokenValue= strtok(TYHJÄ,':');
laskuri++;
}
palata 0;
}

Lähtö:

Seuraava tulos tulee näkyviin yllä olevan koodin suorittamisen jälkeen.

Jaa merkkijono käyttämällä Find () - ja Erase () -toimintoja

Merkkijono voidaan jakaa C ++: ssa käyttämällä find () - ja erase () -toimintoja. Luo C ++ -tiedosto seuraavalla koodilla tarkistaaksesi find () - ja erase () -toimintojen käytön merkkijonon jakamiseksi tietyn rajaajan perusteella. Tunnusarvo luodaan etsimällä erotinpaikka find () -toiminnon avulla, ja tunnuksen arvo tallennetaan sen jälkeen, kun erotin on poistettu käyttämällä erase () -toimintoa. Tämä tehtävä toistetaan, kunnes merkkijonon koko sisältö jäsennetään. Seuraavaksi tulostetaan vektorimatriisin arvot.

// Sisällytä tarvittavat kirjastot
#sisältää
#sisältää
#sisältää

inttärkein(){
// Määritä merkkijono
tuntia::merkkijonostringData= 'Bangladesh ja Japani sekä Saksa ja Brasilia';
// Määritä erotin
tuntia::merkkijonoerotin= 'ja';
// Ilmoita vektorimuuttuja
tuntia::vektorimaa{};
// Ilmoita kokonaislukumuuttuja
intasema;
// Ilmoita merkkijonomuuttuja
tuntia::merkkijonooutstr, merkki;

/ *
Jaa merkkijono substr () -funktiolla
ja jaetun sanan lisääminen vektoriin
* /

sillä aikaa ((asema=stringData.löytö(erotin)) !=tuntia::merkkijono::npos) {
merkki=stringData.substr(0, asema);
// Poista ylimääräinen tila jaetun merkkijonon etuosasta
maa.työnnä takaisin(merkki.poistaa(0, merkki.find_first_not_of('')));
stringData.poistaa(0, asema+erotin.pituus());
}
// Tulosta kaikki jaetut sanat paitsi viimeinen
varten (const auto &ylittää:maa) {
tuntia::kustannus <<ylittää<<tuntia::endl;
}
// Tulosta viimeinen jaettu sana
tuntia::kustannus <<stringData.poistaa(0, stringData.find_first_not_of('')) <<tuntia::endl;
palata 0;
}

Lähtö:

Seuraava tulos tulee näkyviin yllä olevan koodin suorittamisen jälkeen.

Johtopäätös

Tässä opetusohjelmassa on selitetty kolme eri tapaa jakaa merkkijono C ++: ssa käyttämällä yksinkertaisia ​​esimerkkejä, jotka auttavat uusia python -käyttäjiä suorittamaan jakotoiminnon helposti C ++: ssa.