Kuidas jagada stringi C ++ -is

How Split String C



Stringiandmetega töötamine on iga programmeerimiskeele oluline osa. Mõnikord peame stringi andmed programmeerimise eesmärgil jagama. Funktsioon split () on olemas paljudes programmeerimiskeeltes, et jagada string mitmeks osaks. C ++ -l pole stringi jagamiseks sisseehitatud split () funktsiooni, kuid C ++ -l on sama ülesande täitmiseks palju võimalusi, näiteks getline () funktsioon, strtok () funktsioon, kasutades leia () ja kustuta () funktsioone jne. Nende õpetuste kasutamist stringide jagamiseks C ++ -is on selgitatud selles õpetuses.

Eeltingimus

Enne selle õpetuse näidete kontrollimist peate kontrollima, kas kompilaator g ++ on süsteemi installitud või mitte. Kui kasutate Visual Studio koodi, installige käivitatava koodi loomiseks vajalikud laiendused C ++ lähtekoodi kompileerimiseks. Siin on C ++ koodi kompileerimiseks ja käivitamiseks kasutatud rakendust Visual Studio Code.





Jagage string getline () funktsiooni abil

Funktsiooni getline () kasutatakse stringi või faili sisu tähemärkide lugemiseks kuni konkreetse eraldaja või eraldaja leidmiseni ning iga sõelumisstringi salvestamiseks teise stringimuutjasse. Funktsioon jätkab ülesannet, kuni stringi või faili kogu sisu on parsitud. Selle funktsiooni süntaks on toodud allpool.



Süntaks:



voolu&getline(voolu&on, string&str,süsipiiritlema);

Siin on esimene parameeter isstream, on objekt, kust tegelased välja võetakse. Teine parameeter on stringimuutuja, mis salvestab ekstraheeritud väärtuse. Kolmandat parameetrit kasutatakse stringi eraldamiseks kasutatava eraldaja määramiseks.





Looge järgmise koodiga C ++ -fail, et jagada string tühikute eraldaja abil, kasutades getline () funktsiooni. Muutujale on määratud mitme sõna stringiväärtus ja eraldajana on kasutatud tühikut. Väljavõetud sõnade salvestamiseks on deklareeritud vektormuutuja. Järgmisena on tsükkel 'for' kasutanud vektorivormi iga väärtuse printimiseks.

// Kaasa vajalikud teegid
#kaasake
#kaasake
#kaasake
#kaasake

intpeamine()
{
// Määrata stringi andmed, mis jagatakse
tundi::stringstrData= 'Õpi C ++ programmeerimist';
// Määratle eraldajana kasutatavad andmed
const süsieraldaja= '';
// Määrake stringide dünaamilise massiivi muutuja
tundi::vektoroutputArray;
// Striimi koostamine stringist
tundi::stringstreamstreamData(strData);
/ *
Deklareerige kasutatav stringimuutuja
andmete salvestamiseks pärast jagamist
* /

tundi::stringtundi;
/ *
Silmus kordab jagatud andmeid ja
sisestage andmed massiivi
* /

samas (tundi::getline(streamData, val, eraldaja)) {
outputArray.lükka tagasi(tundi);
}
// Jagatud andmete printimine
tundi::maksma << 'Algne string on:' <<strData<<tundi::endl;
// Loe massiivi ja prindi jagatud andmed
tundi::maksma << ' nVäärtused pärast stringi jagamist tühiku alusel: ' <<tundi::endl;
eest (auto &tundi:outputArray) {
tundi::maksma <<tundi<<tundi::endl;
}
tagasi 0;
}

Väljund:



Pärast ülaltoodud koodi täitmist kuvatakse järgmine väljund.

Jagage string strtok () funktsiooni abil

Funktsiooni strtok () saab kasutada stringi jagamiseks, eraldades eraldusjoone põhjal stringi osa. See tagastab kursori järgmisele märgile, kui see on olemas; vastasel korral tagastab see väärtuse NULL. The string.h selle funktsiooni kasutamiseks on vaja päisefaili. Tsükkel nõuab stringi kõigi jagatud väärtuste lugemist. Esimene argument sisaldab stringi väärtust, mida analüüsitakse, ja teine ​​argument sisaldab eraldajat, mida kasutatakse märgi genereerimiseks. Selle funktsiooni süntaks on toodud allpool.

Süntaks:

süsi * strtok ( süsi *str,const süsi *eraldajad);

Stringi jagamiseks looge C ++ fail järgmise koodiga, kasutades funktsiooni strtok (). Märgimassiiv on määratletud koodis, mille eraldajaks on koolon („:”). Edasi, strtok () funktsiooni kutsutakse koos stringi väärtuse ja eraldajaga esimese märgi genereerimiseks. „ samas ’Tsükkel on määratud looma teisi märke ja sümboolseid väärtusi kuni NULL väärtus on leitud.

// Kaasa vajalikud teegid
#kaasake
#kaasake

intpeamine()
{
// Märkide massiivi deklareerimine
süsistrArray[] = 'Mehrab Hossain: IT -professionaal: [e -post kaitstud]: +8801726783423';
// Tagastab esimese märgi väärtuse, mis põhineb ':'
süsi *tokenValue= strtok(strArray,':');
// Initsialiseeri loenduri muutuja
intloendur= 1;
/ *
Märgi väärtuse printimiseks korrake tsüklit
ja jagage ülejäänud stringiandmed, et saada
järgmine sümboolne väärtus
* /

samas (tokenValue!= NULL)
{
kui(loendur== 1)
printf('Nimi: %s n', tokenValue);
muidu kui(loendur== 2)
printf(Amet: %s n', tokenValue);
muidu kui(loendur== 3)
printf('E -post: %s n', tokenValue);
muidu
printf('Mobiilinumber: %s n', tokenValue);
tokenValue= strtok(NULL,':');
loendur++;
}
tagasi 0;
}

Väljund:

Pärast ülaltoodud koodi täitmist kuvatakse järgmine väljund.

Jagage string, kasutades funktsioone find () ja erase ()

Stringi saab jaotada C ++, kasutades funktsiooni find () ja erase (). Looge järgmise koodiga C ++ -fail, et kontrollida funktsiooni find () ja erase () kasutamist, et jagada stringi väärtus konkreetse eraldaja alusel. Märgi väärtus luuakse eraldaja asukoha leidmisega funktsiooni find () abil ja sümboolne väärtus salvestatakse pärast eraldaja eemaldamist funktsiooni erase () abil. Seda ülesannet korratakse, kuni stringi kogu sisu on parsitud. Järgmisena prinditakse vektormassiivi väärtused.

// Kaasa vajalikud teegid
#kaasake
#kaasake
#kaasake

intpeamine(){
// Määratle string
tundi::stringstringData= 'Bangladesh ja Jaapan ning Saksamaa ja Brasiilia';
// Määrake eraldaja
tundi::stringeraldaja= 'ja';
// Vektori muutuja deklareerimine
tundi::vektorriik{};
// Täisarvulise muutuja deklareerimine
intpositsiooni;
// Stringi muutuja deklareerimine
tundi::stringoutstr, sümboolne;

/ *
Poolitage string substr () funktsiooni abil
ja tükeldatud sõna lisamine vektorisse
* /

samas ((positsiooni=stringData.leida(eraldaja)) !=tundi::string::npos) {
sümboolne=stringData.alamstr(0, positsioon);
// Eemaldage lõhestatud stringi esiküljelt lisaruum
riik.lükka tagasi(sümboolne.kustutada(0, sümboolne.leida_esimene_ mitte_('')));
stringData.kustutada(0, positsioon+eraldaja.pikkus());
}
// Printige kõik lõhestatud sõnad, välja arvatud viimane
eest (const auto &ületama:riik) {
tundi::maksma <<ületama<<tundi::endl;
}
// Printige viimane lõhestatud sõna
tundi::maksma <<stringData.kustutada(0, stringData.leida_esimene_ mitte_('')) <<tundi::endl;
tagasi 0;
}

Väljund:

Pärast ülaltoodud koodi täitmist kuvatakse järgmine väljund.

Järeldus

Selles õpetuses on selgitatud kolme erinevat võimalust stringi jagamiseks C ++ -is, kasutades lihtsaid näiteid, mis aitavad uutel pythoni kasutajatel hõlpsasti lõhestamist C ++ -is täita.