Kaip padalinti eilutę C ++

How Split String C



Darbas su eilutės duomenimis yra esminė bet kurios programavimo kalbos dalis. Kartais mums reikia padalinti eilutės duomenis programavimo tikslais. Funkcija split () egzistuoja daugelyje programavimo kalbų, kad eilutė būtų padalyta į kelias dalis. C ++ nėra integruotos split () funkcijos, skirtos skaidyti eilutes, tačiau C ++ yra daug būdų, kaip atlikti tą pačią užduotį, pvz. getline () funkcija, strtok () funkcija, naudojant rasti () ir ištrinti () funkcijas ir tt Šiame vadove paaiškinta, kaip šios funkcijos gali būti naudojamos skaidant eilutes C ++.

Būtina sąlyga

Prieš tikrindami šios pamokos pavyzdžius, turite patikrinti, ar sistemoje „g ++“ kompiliatorius yra įdiegtas, ar ne. Jei naudojate „Visual Studio Code“, įdiekite reikiamus plėtinius, kad sudarytumėte C ++ šaltinio kodą, kad sukurtumėte vykdomąjį kodą. Čia „Visual Studio Code“ programa buvo naudojama C ++ kodui sudaryti ir vykdyti.







Padalinkite eilutę naudodami funkciją getline ()

Funkcija „getline“ () naudojama skaitant simbolius iš eilutės ar failo turinio, kol randamas tam tikras ribotuvas ar skiriamieji ženklai, ir saugoma kiekviena analizės eilutė kitame eilutės kintamajame. Funkcija tęs užduotį, kol bus išanalizuotas visas eilutės ar failo turinys. Šios funkcijos sintaksė pateikta žemiau.



Sintaksė:



srautas&getline(srautas&yra, eilutė&str.,anglisatriboti);

Čia pirmasis parametras srautas, yra objektas, iš kurio bus išgauti simboliai. Antrasis parametras yra eilutės kintamasis, kuris išsaugos išgautą vertę. Trečiasis parametras naudojamas norint nustatyti ribotuvą, kuris bus naudojamas ištraukiant eilutę.





Sukurkite C ++ failą su šiuo kodu, kad padalytumėte eilutę pagal tarpo skyriklį, naudodami getline () funkcija. Į kintamąjį buvo priskirta kelių žodžių eilutės reikšmė, o tarpas buvo naudojamas kaip atskyriklis. Buvo paskelbtas vektorinis kintamasis, skirtas išsaugoti išgautus žodžius. Tada „for“ kilpa panaudojo kiekvieną reikšmę iš vektoriaus masyvo.

// Įtraukti reikiamas bibliotekas
#įtraukti
#įtraukti
#įtraukti
#įtraukti

tarptpagrindinis()
{
// Apibrėžkite skaidomus eilutės duomenis
valandų::eilutėstrData= „Išmokite programuoti C ++“;
// Apibrėžkite duomenis, kurie bus naudojami kaip ribotuvas
konst anglisseparatorius= '';
// Apibrėžkite eilučių dinaminio masyvo kintamąjį
valandų::vektoriusoutputArray;
// Sukurkite srautą iš eilutės
valandų::styginių srautasstreamData(strData);
/ *
Paskelbkite naudojamą eilutės kintamąjį
saugoti duomenis po padalijimo
* /

valandų::eilutėval;
/ *
Ciklas kartos suskaidytus duomenis ir
įveskite duomenis į masyvą
* /

tuo tarpu (valandų::getline(streamData, val, separatorius)) {
outputArray.pastumti atgal(val);
}
// Spausdinti suskaidytus duomenis
valandų::kaina << „Originali eilutė yra:“ <<strData<<valandų::endl;
// Skaitykite masyvą ir išspausdinkite suskaidytus duomenis
valandų::kaina << ' nVertės padalijus eilutę pagal tarpą: ' <<valandų::endl;
dėl (automatinis &val:outputArray) {
valandų::kaina <<val<<valandų::endl;
}
grįžti 0;
}

Išėjimas:



Įvedus pirmiau nurodytą kodą, pasirodys ši išvestis.

Padalinkite eilutę naudodami funkciją strtok ()

Funkcija strtok () gali būti naudojama norint padalyti eilutę, pažymint eilutės dalį pagal ribotuvą. Jis grąžina žymeklį į kitą žetoną, jei jis yra; priešingu atveju grąžinama NULL reikšmė. The eilutė.h norint naudoti šią funkciją, reikalingas antraštės failas. Ciklui reikės perskaityti visas suskaidytas reikšmes iš eilutės. Pirmajame argumente yra eilutės reikšmė, kuri bus analizuojama, o antrame argumente yra skiriamasis ženklas, kuris bus naudojamas žetonui generuoti. Šios funkcijos sintaksė pateikta žemiau.

Sintaksė:

anglis * strtok ( anglis *str.,konst anglis *skiriamieji ženklai);

Sukurkite C ++ failą su šiuo kodu, kad padalintumėte eilutę naudodami funkciją strtok (). Simbolių masyvas yra apibrėžtas kode, kurio skiriamąjį tašką sudaro dvitaškis („:“). Toliau, strtok () funkcija iškviečiama naudojant eilutės reikšmę ir skiriamąjį ženklą, kad būtų sukurtas pirmasis žetonas. „ tuo tarpu “Kilpa yra apibrėžta taip, kad sugeneruotų kitus žetonus ir jų reikšmes iki NULL vertė randama.

// Įtraukti reikiamas bibliotekas
#įtraukti
#įtraukti

tarptpagrindinis()
{
// Skelbti simbolių masyvą
anglisstrArray[] = „Mehrabas Hossainas: IT specialistas: [apsaugotas el. Paštas]: +8801726783423“;
// Grąžinkite pirmąją žetono vertę pagal „:“
anglis *tokenValue= strtok(strArray,':');
// Inicijuoti skaitiklio kintamąjį
tarptskaitiklis= 1;
/ *
Pakartokite kilpą, kad išspausdintumėte žetono vertę
ir padalinkite likusius eilutės duomenis, kad gautumėte
kitą simbolinę vertę
* /

tuo tarpu (tokenValue!= NULL)
{
jei(skaitiklis== 1)
printf('Vardas: %s n', tokenValue);
Kitas jei(skaitiklis== 2)
printf(„Profesija: %s n', tokenValue);
Kitas jei(skaitiklis== 3)
printf(El. Paštas: %s n', tokenValue);
Kitas
printf(„Mobiliojo telefono Nr.: %S n', tokenValue);
tokenValue= strtok(NULL,':');
skaitiklis++;
}
grįžti 0;
}

Išėjimas:

Įvedus pirmiau nurodytą kodą, pasirodys ši išvestis.

Padalinkite eilutę naudodami funkcijas find () ir erase ()

Eilutę galima suskaidyti C ++ naudojant funkcijas find () ir erase (). Sukurkite C ++ failą su šiuo kodu, kad patikrintumėte, kaip panaudojamos paieškos () ir ištrynimo () funkcijos, siekiant padalyti eilutės vertę pagal tam tikrą ribotuvą. Ženklo reikšmė sugeneruojama suradus atribojimo vietą naudojant funkciją find (), o žetono reikšmė bus išsaugota pašalinus ribotuvą naudojant ištrynimo () funkciją. Ši užduotis bus kartojama tol, kol bus išanalizuotas visas eilutės turinys. Tada bus išspausdintos vektoriaus masyvo vertės.

// Įtraukti reikiamas bibliotekas
#įtraukti
#įtraukti
#įtraukti

tarptpagrindinis(){
// Apibrėžkite eilutę
valandų::eilutėstringData= „Bangladešas ir Japonija, Vokietija ir Brazilija“;
// Apibrėžkite separatorių
valandų::eilutėseparatorius= 'ir';
// Deklaruoti vektorinį kintamąjį
valandų::vektoriusŠalis{};
// Deklaruoti sveikųjų skaičių kintamąjį
tarptpoziciją;
// Deklaruoti eilutės kintamąjį
valandų::eilutėoutstr, žetonas;

/ *
Padalinkite eilutę naudodami funkciją substr ()
ir suskaidytą žodį pridedant prie vektoriaus
* /

tuo tarpu ((poziciją=stringData.rasti(separatorius)) !=valandų::eilutė::npos) {
žetonas=stringData.substr(0, pozicija);
// Pašalinkite papildomą erdvę iš suskaidytos eilutės priekio
Šalis.pastumti atgal(žetonas.ištrinti(0, žetonas.rasti_pirmas_ne_('')));
stringData.ištrinti(0, pozicija+separatorius.ilgio());
}
// Spausdinkite visus suskaidytus žodžius, išskyrus paskutinį
dėl (konst automatinis &pranoksta:Šalis) {
valandų::kaina <<pranoksta<<valandų::endl;
}
// Atspausdinkite paskutinį suskaidytą žodį
valandų::kaina <<stringData.ištrinti(0, stringData.rasti_pirmas_ne_('')) <<valandų::endl;
grįžti 0;
}

Išėjimas:

Įvedus pirmiau nurodytą kodą, pasirodys ši išvestis.

Išvada

Šioje pamokoje buvo paaiškinti trys skirtingi būdai skaidyti eilutę C ++ naudojant paprastus pavyzdžius, padedančius naujiems „python“ vartotojams lengvai atlikti skaidymo operaciją naudojant C ++.