Hogyan lehet felosztani a karakterláncot C ++ nyelven

How Split String C



A karakterlánc -adatokkal való munka minden programozási nyelv lényeges része. Néha programozási célokra fel kell osztanunk a karakterlánc adatait. A split () függvény számos programozási nyelvben létezik, hogy a karakterláncot több részre osztja. A C ++ nyelvben nincs beépített split () függvény a karakterláncok felosztásához, de a C ++ nyelvben számos módszer létezik ugyanazon feladat elvégzésére, például a getline () funkció, strtok () funkció, segítségével megtalálja() és törli() függvények, stb. Ezeknek a funkcióknak a karakterláncok felosztására C ++ nyelven történő felhasználását ismertetjük ebben az oktatóanyagban.

Előfeltétel

Az oktatóanyag példáinak ellenőrzése előtt ellenőrizze, hogy a g ++ fordító telepítve van -e a rendszerben. Ha Visual Studio Code -ot használ, akkor telepítse a szükséges bővítményeket a C ++ forráskód fordításához a végrehajtható kód létrehozásához. Itt a Visual Studio Code alkalmazást használtuk a C ++ kód összeállításához és végrehajtásához.







A karakterlánc felosztása a getline () függvénnyel

A getline () függvény a karakterláncból vagy a fájltartalomból származó karakterek olvasására szolgál, amíg egy adott határoló vagy elválasztó nem található, és az egyes elemzési karakterláncokat egy másik karakterlánc -változóba tárolja. A függvény addig folytatja a feladatot, amíg a karakterlánc vagy a fájl teljes tartalmát elemzik. Ennek a függvénynek a szintaxisa az alábbiakban található.



Szintaxis:



istream&getline(istream&az, húr&str,charelválasztani);

Itt az első paraméter, isstream, az az objektum, ahonnan a karaktereket ki kell vonni. A második paraméter egy karakterlánc -változó, amely tárolja a kibontott értéket. A harmadik paraméterrel beállítható a karakterlánc kibontásához használt határoló.





Hozzon létre egy C ++ fájlt a következő kóddal a karakterlánc szétválasztásához a szóköz határoló alapján a getline () funkció. Egy változóhoz több szóból álló karakterlánc van hozzárendelve, és elválasztóként szóközt használunk. A kivont szavak tárolására vektorváltozót jelentettek be. Ezután a „for” ciklus minden értéket kinyomtatott a vektor tömbből.

// Tartalmazza a szükséges könyvtárakat
#befoglalni
#befoglalni
#befoglalni
#befoglalni

intfő-()
{
// Határozza meg a felosztandó karakterlánc -adatokat
órák::húrstrData= 'Tanuld meg a C ++ programozást';
// Határolóként feldolgozandó contant adatok meghatározása
const charszétválasztó= '';
// Határozza meg a karakterláncok dinamikus tömbváltozóját
órák::vektoroutputArray;
// Folyamat létrehozása a karakterláncból
órák::stringstreamstreamData(strData);
/ *
Deklarálja a használni kívánt karakterlánc -változót
az adatok tárolása a felosztás után
* /

órák::húróra;
/ *
A ciklus megismétli a felosztott adatokat és
helyezze be az adatokat a tömbbe
* /

míg (órák::getline(streamData, val, elválasztó)) {
outputArray.visszavet(óra);
}
// A felosztott adatok kinyomtatása
órák::költség << 'Az eredeti karakterlánc:' <<strData<<órák::endl;
// Olvassa el a tömböt és nyomtassa ki a felosztott adatokat
órák::költség << ' nA karakterlánc szóköz szerinti felosztása utáni értékek: ' <<órák::endl;
számára (auto &óra:outputArray) {
órák::költség <<óra<<órák::endl;
}
Visszatérés 0;
}

Kimenet:



A fenti kód végrehajtása után a következő kimenet jelenik meg.

A karakterlánc felosztása a strtok () függvénnyel

Az strtok () függvénnyel szét lehet osztani egy karakterláncot a karakterlánc részének elválasztó alapján történő tokenizálásával. Visszaad egy mutatót a következő tokenre, ha létezik; ellenkező esetben NULL értéket ad vissza. Az húr.h fejléc fájl szükséges a funkció használatához. A ciklus megköveteli, hogy a sztring minden felosztott értékét kiolvassa. Az első argumentum tartalmazza az értelmezni kívánt karakterlánc értékét, a második argumentum pedig a jogkivonat létrehozásához használt elválasztót. Ennek a függvénynek a szintaxisa az alábbiakban található.

Szintaxis:

char * strtok ( char *str,const char *elválasztók);

Hozzon létre egy C ++ fájlt a következő kóddal a karakterlánc felosztásához az strtok () függvénnyel. A kódban karakterek vannak definiálva, amelyek kettőspontot („:”) választanak el. Ezután a strtok () függvényt a karakterlánc értékével és a határolóval hívják meg az első token létrehozásához. Az ' míg ’Ciklus úgy van definiálva, hogy a többi tokent és a jogkivonat -értékeket a NULLA érték megtalálható.

// Tartalmazza a szükséges könyvtárakat
#befoglalni
#befoglalni

intfő-()
{
// Karakterek deklarálása
charstrArray[] = 'Mehrab Hossain: informatikus: [email protected]: +8801726783423';
// Az első token érték visszaadása a ':' alapján
char *tokenValue= strtok(strArray,':');
// Inicializálja a számláló változót
intszámláló= 1;
/ *
A token érték kinyomtatásához ismételje meg a ciklust
és ossza meg a fennmaradó karakterlánc -adatokat, hogy megkapja
a következő jelzőérték
* /

míg (tokenValue!= NULLA)
{
ha(számláló== 1)
printf('Név: %s n', tokenValue);
más ha(számláló== 2)
printf('Foglalkozása: %s n', tokenValue);
más ha(számláló== 3)
printf('E -mail: %s n', tokenValue);
más
printf('Mobilszám: %s n', tokenValue);
tokenValue= strtok(NULLA,':');
számláló++;
}
Visszatérés 0;
}

Kimenet:

A fenti kód végrehajtása után a következő kimenet jelenik meg.

A karakterlánc felosztása a find () és az erase () függvényekkel

A karakterlánc felosztható a C ++ nyelvben a find () és az erase () függvények használatával. Hozzon létre egy C ++ fájlt a következő kóddal, hogy ellenőrizze a find () és az erase () függvények használatát a karakterlánc értékének felosztására egy adott határoló alapján. A jogkivonat értékét a határoló pozíció megkeresése generálja a find () függvény használatával, és a token értékét a törlő () függvény használatával a határoló eltávolítása után tárolja. Ez a feladat addig ismétlődik, amíg a karakterlánc teljes tartalmát elemzik. Ezután kinyomtatjuk a vektor tömb értékeit.

// Tartalmazza a szükséges könyvtárakat
#befoglalni
#befoglalni
#befoglalni

intfő-(){
// Határozza meg a karakterláncot
órák::húrstringData= 'Banglades és Japán, Németország és Brazília';
// Határozza meg az elválasztót
órák::húrszétválasztó= 'és';
// A vektor változó deklarálása
órák::vektorország{};
// Egész változó deklarálása
intpozíció;
// String változó deklarálása
órák::húroutstr, token;

/ *
Ossza fel a karakterláncot az substr () függvénnyel
és a felosztott szót hozzáadjuk a vektorhoz
* /

míg ((pozíció=stringData.megtalálja(szétválasztó)) !=órák::húr::npos) {
jelképes=stringData.alstr(0, pozíció);
// Távolítsa el a felesleges helyet az osztott karakterlánc elejéről
ország.visszavet(jelképes.törli(0, jelző.find_first_not_of('')));
stringData.törli(0, pozíció+szétválasztó.hossz());
}
// Az összes felosztott szó nyomtatása az utolsó kivételével
számára (const auto &felülmúlja:ország) {
órák::költség <<felülmúlja<<órák::endl;
}
// Az utolsó felosztott szó kinyomtatása
órák::költség <<stringData.törli(0, stringData.find_first_not_of('')) <<órák::endl;
Visszatérés 0;
}

Kimenet:

A fenti kód végrehajtása után a következő kimenet jelenik meg.

Következtetés

Ebben az oktatóanyagban három különböző módot ismertetünk a karakterláncok C ++ nyelven történő felosztására egyszerű példák segítségével, amelyek segítenek az új python -felhasználóknak a megosztási művelet egyszerű végrehajtásában C ++ nyelven.