C++ Reťazec Obsahuje podreťazec

C Retazec Obsahuje Podretazec



V C++ máme dátový typ string a môžeme použiť rôzne funkcie na vykonávanie rôznych úloh s reťazcami. Môžeme skontrolovať, či je podreťazec prítomný v pôvodnom reťazci. Môžeme tiež povedať, že „reťazec obsahuje podreťazec“. V tejto príručke sa naučíme techniky, ktoré nám pomôžu nájsť reťazec „reťazec obsahuje podreťazec“. Funkcie “find()” a “strstr()” nám pomáhajú pri vykonávaní tejto úlohy v programovaní v C++.

Príklad 1:

„iostream“ a „reťazec“ sú hlavičkové súbory, ktoré sú tu zahrnuté, pretože musíme pracovať s reťazcami a tiež musíme vkladať alebo odosielať údaje. Takže sem musíme zahrnúť tieto hlavičkové súbory. Potom zahrnieme „namespace std“ pomocou kľúčového slova „using“. Takže toto „std“ so všetkými funkciami nemusíme vkladať do nášho kódu samostatne. Potom sa tu vyvolá funkcia „main()“.







Teraz deklarujeme reťazec „str_1“ a tejto premennej priradíme nejaké údaje reťazca. Potom tiež inicializujeme ďalšiu premennú s názvom „str_2“ dátového typu „string“ a priradíme „like“ tejto premennej „str_2“. Nižšie používame kľúčové slovo „bool“, aby sme poskytli pravdivé alebo nepravdivé výsledky. Inicializujeme „stringHasStr“ s týmto typom údajov „bool“ a využívame funkciu „find()“. Toto vyhľadá „reťazec obsahuje podreťazec“. „str_1“ je úplný reťazec a „str_2“ je podreťazec.



Tu tiež pridáme kľúčové slovo „npos“, ktoré sa používa na preukázanie, že v tomto reťazci nie sú žiadne zhody. Skontroluje, či reťazec obsahuje podreťazec a uloží výsledok do tejto boolovej premennej „stringHasStr“.



Potom prejdeme k podmienke „if“ a túto premennú „stringHasStr“ prenesieme do tejto podmienky „ak“. Ak je výsledok uložený v tejto boolovej premennej „true“, použije sa príkaz za touto podmienkou „if“, kde použijeme „cout“ a zobrazíme reťazec, ktorý sa tu nachádza. Ak je však výsledok „false“ uložený v tejto premennej bool, použije sa druhá časť a zobrazí sa, že sa tu reťazec nenachádza.





Kód 1:

#include
#include

pomocou menného priestoru std;
int main ( )
{
reťazec str_1 = 'Mám rád programovací jazyk C++' ;
reťazec str_2 = 'Páči sa mi to' ;
bool stringHasStr = str_1.find ( str_2 ) ! = string::npos;
ak ( stringHasStr ) {
cout << 'Tu nájdeme reťazec, ktorý je' << str_2 << endl;
}
inak {
cout << 'String sa nenašiel' << endl;
}
vrátiť 0 ;
}



Výkon:

Tento daný výstup vykreslí, že reťazec obsahuje podreťazec a zobrazí ho tu. Skontrolujeme to pomocou funkcie „nájsť ()“.

Príklad 2:

Zahŕňame tri hlavičkové súbory, ktoré sú „iostream“, „string“ a „cstring“. Potom vyvolajte „main()“ po umiestnení „namespace std“. Teraz je deklarovaný reťazec „new_str“ a sú priradené niektoré údaje reťazca.

Ďalej inicializujeme druhú premennú dátového typu „string“ s názvom „sub_str“ a priradíme jej hodnotu „veľmi“. Potom umiestnime „const char*“. Zmena hodnoty ukazovateľa tak, aby ukazovala na iné miesto v pamäti, je teda nemožná. Premennú „FindingStr“ deklarujeme ako tento ukazovateľ „const char*“. Inicializujeme ho metódou „strstr()“ a oba reťazce odovzdávame spolu s funkciou „c_str()“, ktorá transformuje reťazec na pole znakov, ktoré končí hodnotou null. Táto metóda „strstr()“ pomáha pri kontrole, či reťazec „new_str“ obsahuje podreťazec „sub_str“ alebo nie. Potom máme „if“, do ktorého pridáme „FindingStr“. Ak nájde podreťazec v origináli, vykoná sa príkaz po „if“, kde použijeme „cout“. Ak sa podreťazec nenájde, presunie sa priamo do časti „else“ a vytlačí výsledok, ktorý je umiestnený za časťou „else“.

Kód 2:

#include
#include
#include

pomocou menného priestoru std;
int main ( )
{
string new_str = 'Vonku prší a počasie je veľmi príjemné.' ;
reťazec sub_str = 'veľmi' ;
const char * FindingStr = strstr ( new_str.c_str ( ) , sub_str.c_str ( ) ) ;
ak ( FindingStr ) {
cout << 'Nájdeme reťazec a reťazec je: ' << sub_str << endl;
}
inak {
cout << 'Reťazec sa nenašiel' << endl;
}
vrátiť 0 ;
}

Výkon:

Môžeme si všimnúť, že daný reťazec obsahuje podreťazec, pretože zobrazuje príkaz, ktorý sme pridali za „if“ a vypíše podreťazec tu. Skontrolujeme to pomocou funkcie „strstr()“.

Príklad 3:

Tu inicializujeme dve reťazcové premenné: „myNewStr“ a „mySubStr“. Potom priradíme nejaké reťazcové dáta a deklarujeme dve celočíselné premenné: „posOfStr“ a „indexOfStr“.

Pod tým použijeme cyklus „while()“ a premennú funkcie „find()“ priradíme premennej „indexOfStr“ v rámci tohto cyklu „while()“. Tejto funkcii „find()“ odovzdáme dve premenné, ktorými sú „mySubStr“ a „posOfStr“. Potom umiestnime kľúčové slovo „npos“, ktoré kontroluje, či sa výsledok funkcie „nájsť“ nerovná „npos“. Potom použijeme „cout“, ktorý zvýši hodnotu indexu o jednu a uloží ju do premennej „posOfStr“.

Kód 3:

#include
#include

pomocou menného priestoru std;
int main ( ) {
string myNewStr = 'tu nachádzame reťazec' ;
string mySubStr = 'reťazec' ;
int posOfStr = 0 ;
int indexOfStr;
zatiaľ čo ( ( indexOfStr = myNewStr.find ( mySubStr, posOfStr ) ) ! = string::npos ) {
cout << 'Podreťazec je' << ''' << mySubStr << ''' << ' Nájdené pod číslom indexu : ' << indexOfStr << endl;
posOfStr = indexOfStr + 1 ;
}
vrátiť 0 ;
}

Výkon:

Tu sa ukazuje, že daný reťazec obsahuje podreťazec a indexové číslo tohto reťazca je „19“, čo je zobrazené aj v tomto výsledku.

Príklad 4:

V tomto kóde zahrnieme hlavičkový súbor „bits/stdc++.h“. Teraz už nemusíme zahrnúť ďalšie hlavičkové súbory, pretože obsahujú všetky požadované knižnice. Po vyvolaní „main()“ inicializujeme premenné „org_str“ a „sub_str“ dátového typu „string“. Potom pridáme podmienku „if“, v ktorej použijeme funkciu „strstr()“. Táto funkcia hľadá, či daný reťazec obsahuje požadovaný podreťazec. Potom pridáme príkaz „cout“, aby sme vypísali, že podreťazec sa nachádza tu. Potom vložíme aj časť „else“, ktorá sa vykoná len vtedy, keď nie je splnená podmienka „if“ alebo sa v reťazci nenájde podreťazec.

Potom deklarujeme premennú „sub_str2“ a priradíme sem údaje reťazca. Potom sa vloží podmienka „if“ a použije sa funkcia „strstr()“. Táto metóda hľadá, či zadaný reťazec obsahuje požadovaný podreťazec. Výsledok sa potom vytlačí tu pomocou príkazu „cout“. Zahŕňame aj sekciu „else“, ktorá sa spustí iba vtedy, ak nie je splnená podmienka „if“ alebo ak sa podreťazec nedá nájsť v reťazci.

Kód 4:

#include
pomocou menného priestoru std;
int main ( ) {
reťazec org_str = 'Programovací jazyk C++' ;
reťazec sub_str = 'Program' ;
ak ( strstr ( org_str.c_str ( ) ,sub_str.c_str ( ) ) )
{
cout << 'Podreťazec tu je' << ''' << sub_str << ''' << 'je prítomný v' << org_str << endl;
}
inak {
cout << 'Podreťazec nie je prítomný v reťazci.' << endl;
}
reťazec sub_str2 = 'Java' ;

ak ( strstr ( org_str.c_str ( ) ,sub_str2.c_str ( ) ) )
{
cout << 'Podreťazec tu je' << ''' << sub_str2 << '' << 'je prítomný v' << org_str << endl;
}
inak {
cout << 'Podreťazec sa v tomto reťazci nenachádza.' << endl;
}
vrátiť 0 ;
}

Výkon:

Výsledok prvej funkcie „strstr()“ ukazuje, že reťazec obsahuje podreťazec, ale výsledok druhej funkcie „strstr()“ ukazuje, že podreťazec sa v reťazci nenachádza.

Záver

Pojem „reťazec obsahuje podreťazec“ je dôkladne preskúmaný v tejto príručke. Preskúmali sme dve metódy, ktoré pomáhajú pri hľadaní toho, či „reťazec obsahuje podreťazec“. Vysvetlili sme funkcie “find()”, ako aj funkcie “strstr()”, ktoré C++ poskytuje tu v tejto príručke na vykonanie tejto úlohy. Demonštrujeme to na jedinečných príkladoch, v ktorých sme sa naučili, ako využiť tieto funkcie na kontrolu, či „reťazec obsahuje podreťazec“.