Ako rozdeliť reťazec v C ++

How Split String C



Práca s reťazcovými údajmi je základnou súčasťou každého programovacieho jazyka. Niekedy musíme na účely programovania rozdeliť reťazcové údaje. Funkcia split () existuje v mnohých programovacích jazykoch na rozdelenie reťazca na viacero častí. V C ++ nie je vstavaná funkcia split () na delenie reťazcov, ale v C ++ existuje mnoho spôsobov, ako vykonávať rovnakú úlohu, ako napríklad getline () funkcia, strtok () funkciu, pomocou Nájsť() a vymazať() funkcie atď. Použitie týchto funkcií na rozdelenie reťazcov v C ++ bolo vysvetlené v tomto návode.

Predpoklad

Pred kontrolou príkladov tohto tutoriálu musíte skontrolovať, či je kompilátor g ++ v systéme nainštalovaný alebo nie. Ak používate kód Visual Studio, nainštalujte si potrebné rozšírenia na kompiláciu zdrojového kódu C ++ na vytvorenie spustiteľného kódu. Tu bola aplikácia Visual Studio Code použitá na kompiláciu a spustenie kódu C ++.







Rozdeľte reťazec pomocou funkcie getline ()

Funkcia getline () sa používa na čítanie znakov z reťazca alebo obsahu súboru, kým sa nenájde konkrétny oddeľovač alebo oddeľovač, a uloží každý analyzovaný reťazec do inej reťazcovej premennej. Funkcia bude pokračovať v úlohe, kým nebude analyzovaný celý obsah reťazca alebo súboru. Syntax tejto funkcie je uvedená nižšie.



Syntax:



istream&getline(istream&je reťazec&str,chardelim);

Tu je prvý parameter, isstream, je objekt, z ktorého budú extrahované znaky. Druhým parametrom je reťazcová premenná, ktorá bude ukladať extrahovanú hodnotu. Tretí parameter sa používa na nastavenie oddeľovača, ktorý sa použije na extrahovanie reťazca.





Vytvorte súbor C ++ s nasledujúcim kódom na rozdelenie reťazca na základe oddeľovača medzier pomocou getline () funkciu. Do premennej bola priradená reťazcová hodnota viacerých slov a ako oddeľovač bola použitá medzera. Na uloženie extrahovaných slov bola deklarovaná vektorová premenná. Ďalej slučka „for“ použila na vytlačenie každej hodnoty z vektorového poľa.

// Zahrňte potrebné knižnice
#zahrnúť
#zahrnúť
#zahrnúť
#zahrnúť

intHlavná()
{
// Definujte údaje reťazca, ktoré budú rozdelené
hodiny::reťazecstrData= „Naučte sa programovať v C ++“;
// Definujte existujúce údaje, ktoré budú fungovať ako oddeľovač
konšt charoddeľovač= '';
// Definujte premennú dynamického poľa reťazcov
hodiny::vektoroutputArray;
// Vytvorte prúd z reťazca
hodiny::stringstreamstreamData(strData);
/ *
Deklarujte premennú reťazca, ktorá bude použitá
na ukladanie údajov po rozdelení
* /

hodiny::reťazechod;
/ *
Smyčka bude iterovať rozdelené údaje a
vložte údaje do poľa
* /

kým (hodiny::getline(streamData, val, separátor)) {
outputArray.push_back(hod);
}
// Vytlačte rozdelené údaje
hodiny::náklady << „Pôvodný reťazec je:“ <<strData<<hodiny::endl;
// Prečítajte pole a vytlačte rozdelené údaje
hodiny::náklady << ' nHodnoty po rozdelení reťazca na základe medzery: ' <<hodiny::endl;
pre (auto &hod:outputArray) {
hodiny::náklady <<hod<<hodiny::endl;
}
vrátiť sa 0;
}

Výkon:



Po spustení vyššie uvedeného kódu sa zobrazí nasledujúci výstup.

Rozdeľte reťazec pomocou funkcie strtok ()

Funkciu strtok () možno použiť na rozdelenie reťazca tokenizovaním časti reťazca na základe oddeľovača. Ak existuje, vráti ukazovateľ na nasledujúci token; v opačnom prípade vráti hodnotu NULL. The reťazec.h Na použitie tejto funkcie je potrebný hlavičkový súbor. Cyklus bude vyžadovať prečítanie všetkých rozdelených hodnôt z reťazca. Prvý argument obsahuje hodnotu reťazca, ktorá sa bude analyzovať, a druhý argument obsahuje oddeľovač, ktorý bude použitý na generovanie tokenu. Syntax tejto funkcie je uvedená nižšie.

Syntax:

char * strtok ( char *str,konšt char *oddeľovače);

Vytvorte súbor C ++ s nasledujúcim kódom na rozdelenie reťazca pomocou funkcie strtok (). V kóde je definovaný rad znakov obsahujúci ako oddeľovač dvojbodku (':'). Ďalej, strtok () funkcia sa volá s hodnotou reťazca a oddeľovačom na vygenerovanie prvého tokenu. „ kým Slučka je definovaná tak, aby generovala ostatné tokeny a hodnoty tokenov do NULOVÝ hodnota sa zistí.

// Zahrňte potrebné knižnice
#zahrnúť
#zahrnúť

intHlavná()
{
// Deklarujte pole znakov
charstrArray[] = „Mehrab Hossain: IT profesionál: [chránený e -mailom]: +8801726783423 ';
// Vráti prvú hodnotu tokenu na základe znaku ':'
char *tokenValue= strtok(strArray,':');
// Inicializácia premennej počítadla
intpočítadlo= 1;
/ *
Opakovaním slučky vytlačíte hodnotu tokenu
a rozdeľte zostávajúce reťazcové údaje, aby ste ich získali
nasledujúca hodnota tokenu
* /

kým (tokenValue!= NULOVÝ)
{
keby(počítadlo== 1)
printf('Meno: %s n', tokenValue);
inak keby(počítadlo== 2)
printf(„Povolanie: %s n', tokenValue);
inak keby(počítadlo== 3)
printf('E -mail: %s n', tokenValue);
inak
printf(„Mobilné číslo: %s n', tokenValue);
tokenValue= strtok(NULOVÝ,':');
počítadlo++;
}
vrátiť sa 0;
}

Výkon:

Po spustení vyššie uvedeného kódu sa zobrazí nasledujúci výstup.

Rozdeľte reťazec pomocou funkcií find () a erase ()

Reťazec je možné rozdeliť v C ++ pomocou funkcií find () a erase (). Vytvorte súbor C ++ s nasledujúcim kódom a skontrolujte používanie funkcií find () a erase () na rozdelenie reťazcovej hodnoty na základe konkrétneho oddeľovača. Hodnota tokenu je generovaná nájdením polohy oddeľovača pomocou funkcie find () a hodnota tokenu bude uložená po odstránení oddeľovača pomocou funkcie erase (). Táto úloha sa bude opakovať, kým nebude analyzovaný celý obsah reťazca. Ďalej sa vytlačia hodnoty vektorového poľa.

// Zahrňte potrebné knižnice
#zahrnúť
#zahrnúť
#zahrnúť

intHlavná(){
// Definujte reťazec
hodiny::reťazecstringData= „Bangladéš a Japonsko, Nemecko a Brazília“;
// Definujte oddeľovač
hodiny::reťazecoddeľovač= 'a';
// Deklarujte vektorovú premennú
hodiny::vektorkrajina{};
// Deklarujte celočíselnú premennú
intpozíciu;
// Deklarujte reťazcovú premennú
hodiny::reťazecoutstr, token;

/ *
Rozdeľte reťazec pomocou funkcie substr ()
a pridanie rozdeleného slova do vektora
* /

kým ((pozíciu=stringData.Nájsť(oddeľovač)) !=hodiny::reťazec::npos) {
žetón=stringData.substr(0, poloha);
// Odstráňte nadbytočné miesto z prednej časti rozdeleného reťazca
krajina.push_back(žetón.vymazať(0, žetón.find_first_not_of('')));
stringData.vymazať(0, poloha+oddeľovač.dĺžka());
}
// Vytlačí všetky rozdelené slová okrem posledného
pre (konšt auto &vonkajšia:krajina) {
hodiny::náklady <<vonkajšia<<hodiny::endl;
}
// Vytlačí posledné rozdelené slovo
hodiny::náklady <<stringData.vymazať(0, stringData.find_first_not_of('')) <<hodiny::endl;
vrátiť sa 0;
}

Výkon:

Po spustení vyššie uvedeného kódu sa zobrazí nasledujúci výstup.

Záver

V tomto návode boli vysvetlené tri rôzne spôsoby rozdelenia reťazca v C ++ pomocou jednoduchých príkladov, ktoré pomôžu novým používateľom pythonu ľahko vykonať operáciu rozdelenia v C ++.