Řetězec C++ Obsahuje podřetězec

Retezec C Obsahuje Podretezec



V C++ máme datový typ string a můžeme použít různé funkce k provádění různých úkolů s řetězci. Můžeme zkontrolovat, zda je podřetězec přítomen uvnitř původního řetězce. Můžeme také říci, že „řetězec obsahuje podřetězec“. V této příručce se naučíme techniky, které nám pomohou najít „řetězec obsahuje podřetězec“. Funkce „find()“ a „strstr()“ nám pomáhají při provádění tohoto úkolu v programování v C++.

Příklad 1:

„iostream“ a „řetězec“ jsou hlavičkové soubory, které jsou zde zahrnuty, protože musíme pracovat s řetězci a také musíme vkládat nebo vydávat data. Takže sem musíme zahrnout tyto hlavičkové soubory. Poté zahrneme „namespace std“ pomocí klíčového slova „using“. Nemusíme tedy do našeho kódu vkládat toto „std“ se všemi funkcemi samostatně. Poté se zde vyvolá funkce „main()“.







Nyní deklarujeme řetězec „str_1“ a této proměnné přiřadíme nějaká data řetězce. Poté také inicializujeme další proměnnou s názvem „str_2“ datového typu „string“ a této proměnné „str_2“ přiřadíme „like“. Pod tím používáme klíčové slovo „bool“, abychom poskytli pravdivé nebo nepravdivé výsledky. Inicializujeme „stringHasStr“ s tímto datovým typem „bool“ a využíváme funkci „find()“. Toto vyhledá „řetězec obsahuje podřetězec“. „str_1“ je úplný řetězec a „str_2“ je podřetězec.



Zde také přidáme klíčové slovo „npos“, které se používá k prokázání, že v tomto řetězci nejsou žádné shody. Zkontroluje, zda řetězec obsahuje podřetězec, a uloží výsledek do této boolové proměnné „stringHasStr“.



Poté se přesuneme k podmínce „if“ a předáme tuto proměnnou „stringHasStr“ této podmínce „if“. Pokud je výsledek uložený v této boolovské proměnné „true“, použije se příkaz za touto podmínkou „if“, kde použijeme „cout“ a zobrazíme zde nalezený řetězec. Ale pokud je výsledek „false“ uložen v této boolově proměnné, použije se druhá část a zobrazí se, že zde řetězec nebyl nalezen.





Kód 1:

#include
#include <řetězec>

pomocí jmenného prostoru std;
int main ( )
{
řetězec str_1 = 'Mám rád programovací jazyk C++' ;
řetězec str_2 = 'jako' ;
bool stringHasStr = str_1.find ( str_2 ) ! = string::npos;
-li ( stringHasStr ) {
cout << 'Najdeme zde řetězec, který je' << str_2 << endl;
}
jiný {
cout << 'String nebyl nalezen' << endl;
}
vrátit se 0 ;
}



Výstup:

Tento daný výstup vykreslí, že řetězec obsahuje podřetězec, a zobrazí jej zde. Zkontrolujeme to pomocí funkce „find()“.

Příklad 2:

Zde uvádíme tři hlavičkové soubory, které jsou „iostream“, „string“ a „cstring“. Poté vyvolejte „main()“ po umístění „namespace std“. Řetězec „new_str“ je nyní deklarován a jsou přiřazena některá data řetězce.

Dále inicializujeme druhou proměnnou datového typu „string“ nazvanou „sub_str“ a přiřadíme jí hodnotu „very“. Poté umístíme „const char*“. Změna hodnoty ukazatele tak, aby ukazovala na jiné místo v paměti, je tedy nemožná. Zde deklarujeme proměnnou „FindingStr“ jako tento ukazatel „const char*“. Inicializujeme jej metodou „strstr()“ a oba řetězce předáme spolu s funkcí „c_str()“, která transformuje řetězec na pole znaků, které končí hodnotou null. Tato metoda „strstr()“ pomáhá při kontrole, zda řetězec „new_str“ obsahuje podřetězec „sub_str“ nebo ne. Pak máme „if“, do kterého přidáme „FindingStr“. Pokud najde podřetězec v originále, provede se příkaz za „if“, kde použijeme „cout“. Pokud podřetězec není nalezen, přesune se přímo k části „ostatní“ a vytiskne výsledek, který je umístěn za částí „ostatní“.

Kód 2:

#include
#include <řetězec>
#include

pomocí jmenného prostoru std;
int main ( )
{
řetězec nový_str = 'Venku prší a počasí je velmi příjemné.' ;
řetězec sub_str = 'velmi' ;
konst char * FindingStr = strstr ( new_str.c_str ( ) , sub_str.c_str ( ) ) ;
-li ( FindingStr ) {
cout << 'Najdeme řetězec a řetězec je: ' << sub_str << endl;
}
jiný {
cout << 'Řetězec nenalezen' << endl;
}
vrátit se 0 ;
}

Výstup:

Můžeme si všimnout, že daný řetězec obsahuje podřetězec, protože zobrazuje příkaz, který jsme přidali za „if“ a vypisuje podřetězec zde. Ověříme to pomocí funkce „strstr()“.

Příklad 3:

Zde inicializujeme dvě řetězcové proměnné: „myNewStr“ a „mySubStr“. Poté přiřadíme nějaká data řetězce a deklarujeme dvě celočíselné proměnné: „posOfStr“ a „indexOfStr“.

Pod tím použijeme cyklus „while()“ a proměnnou funkce „find()“ přiřadíme proměnné „indexOfStr“ uvnitř tohoto cyklu „while()“. Této funkci „find()“ předáme dvě proměnné, kterými jsou „mySubStr“ a „posOfStr“. Poté umístíme klíčové slovo „npos“, které kontroluje, že výsledek funkce „find“ není roven „npos“. Poté použijeme „cout“, který zvýší hodnotu indexu o jednu a uloží ji do proměnné „posOfStr“.

Kód 3:

#include
#include <řetězec>

pomocí jmenného prostoru std;
int main ( ) {
řetězec myNewStr = 'najdeme zde řetězec' ;
řetězec mySubStr = 'tětiva' ;
int posOfStr = 0 ;
int indexOfStr;
zatímco ( ( indexOfStr = myNewStr.find ( mySubStr, posOfStr ) ) ! = string::npos ) {
cout << 'Podřetězec je' << ''' << mySubStr << ''' << ' Nalezeno pod indexovým číslem : ' << indexOfStr << endl;
posOfStr = indexOfStr + 1 ;
}
vrátit se 0 ;
}

Výstup:

Zde ukazuje, že daný řetězec obsahuje podřetězec a indexové číslo tohoto řetězce je „19“, což je také zobrazeno v tomto výsledku.

Příklad 4:

V tomto kódu zahrnujeme hlavičkový soubor „bits/stdc++.h“. Nyní nemusíme zahrnout další soubory záhlaví, protože obsahují všechny požadované knihovny. Po vyvolání „main()“ inicializujeme proměnné „org_str“ a „sub_str“ datového typu „string“. Poté přidáme podmínku „if“, ve které použijeme funkci „strstr()“. Tato funkce hledá, zda daný řetězec obsahuje požadovaný podřetězec. Poté přidáme příkaz „cout“, abychom vytiskli, že se podřetězec nachází zde. Poté vložíme také část „else“, která se provede pouze v případě, že podmínka „if“ není splněna nebo podřetězec není v řetězci nalezen.

Poté deklarujeme proměnnou „sub_str2“ a zde přiřadíme data řetězce. Poté se vloží podmínka „if“ a použije se funkce „strstr()“. Tato metoda hledá, zda zadaný řetězec obsahuje požadovaný podřetězec. Výsledek se pak vytiskne zde pomocí příkazu „cout“. Zahrnujeme také sekci „else“, která se spustí pouze v případě, že není splněna podmínka „if“ nebo pokud podřetězec nelze v řetězci najít.

Kód 4:

#include
pomocí jmenného prostoru std;
int main ( ) {
řetězec org_str = 'Programovací jazyk C++' ;
řetězec sub_str = 'Program' ;
-li ( strstr ( org_str.c_str ( ) ,sub_str.c_str ( ) ) )
{
cout << 'Tady je podřetězec' << ''' << sub_str << ''' << 'je přítomen v' << org_str << endl;
}
jiný {
cout << 'Podřetězec není v řetězci přítomen.' << endl;
}
řetězec sub_str2 = 'Jáva' ;

-li ( strstr ( org_str.c_str ( ) ,sub_str2.c_str ( ) ) )
{
cout << 'Tady je podřetězec' << ''' << sub_str2 << ''' << 'je přítomen v' << org_str << endl;
}
jiný {
cout << 'Podřetězec není v tomto řetězci přítomen.' << endl;
}
vrátit se 0 ;
}

Výstup:

Výsledek první funkce „strstr()“ ukazuje, že řetězec obsahuje podřetězec, ale výsledek druhé funkce „strstr()“ ukazuje, že podřetězec v řetězci není.

Závěr

Koncept „řetězec obsahuje podřetězec“ je v této příručce důkladně prozkoumán. Prozkoumali jsme dvě metody, které pomáhají při hledání, zda „řetězec obsahuje podřetězec“. Vysvětlili jsme funkce „find()“ a také „strstr()“, které C++ poskytuje zde v této příručce pro provedení tohoto úkolu. Demonstrujeme na jedinečných příkladech, ve kterých jsme se naučili používat tyto funkce ke kontrole, zda „řetězec obsahuje podřetězec“.