C++-merkkijono sisältää alimerkkijonon

C Merkkijono Sisaltaa Alimerkkijonon



C++:ssa meillä on merkkijonotietotyyppi ja voimme käyttää erilaisia ​​toimintoja erilaisten tehtävien suorittamiseen merkkijonojen kanssa. Voimme tarkistaa, onko alimerkkijono alkuperäisen merkkijonon sisällä. Voimme myös sanoa, että 'merkkijono sisältää alimerkkijonon'. Tässä oppaassa opimme tekniikoita, jotka auttavat meitä löytämään 'merkkijono sisältää alimerkkijonon'. Funktiot “find()” ja “strstr()” auttavat meitä suorittamaan tämän tehtävän C++-ohjelmoinnissa.

Esimerkki 1:

'iostream' ja 'string' ovat otsikkotiedostoja, jotka sisältyvät tähän, koska meidän on työskenneltävä merkkijonojen kanssa ja myös syötettävä tai tulostettava tiedot. Joten meidän on sisällytettävä nämä otsikkotiedostot tähän. Tämän jälkeen sisällytämme 'namespace std' -avainsanan 'using' avulla. Joten meidän ei tarvitse laittaa tätä 'std' kaikkien toimintojen kanssa erikseen koodiimme. Sitten 'main()'-funktio kutsutaan tässä.







Nyt julistamme 'str_1'-merkkijonon ja määritämme tälle muuttujalle joitakin merkkijonotietoja. Sitten alustamme myös toisen 'string'-tietotyypin muuttujan nimeltä 'str_2' ja annamme 'like' tälle 'str_2'-muuttujalle. Tämän alapuolella käytämme 'bool'-avainsanaa oikeiden tai väärien tulosten antamiseen. Alustamme 'stringHasStr' tällä 'bool'-tietotyypillä ja käytämme 'find()'-funktiota. Tämä etsii 'merkkijono sisältää alimerkkijonon'. 'str_1' on täydellinen merkkijono ja 'str_2' on alimerkkijono.



Täällä lisäämme myös 'npos'-avainsanan, jota käytetään osoittamaan, että tässä merkkijonossa ei ole osumia. Se tarkistaa, sisältääkö merkkijono alimerkkijonon, ja tallentaa tuloksen tähän 'stringHasStr' bool-muuttujaan.



Sitten siirrymme eteenpäin kohti 'jos' -ehtoa ja välitämme tämän 'stringHasStr' -muuttujan tähän 'if' -ehtoon. Jos tähän bool-muuttujaan tallennettu tulos on 'true', käytetään tämän 'jos' -ehdon jälkeistä lausetta, jossa hyödynnetään 'cout' ja näytetään tästä löydetty merkkijono. Mutta jos 'false' tulos on tallennettu tähän bool-muuttujaan, toinen osa otetaan käyttöön ja näyttää, että merkkijonoa ei löydy täältä.





Koodi 1:

#include
#sisällytä

käyttäen nimiavaruutta std;
int main ( )
{
merkkijono str_1 = 'Pidän C++-ohjelmointikielestä' ;
merkkijono str_2 = 'Kuten' ;
bool stringHasStr = str_1.find ( str_2 ) ! = merkkijono::npos;
jos ( stringHasStr ) {
cout << 'Löydämme tästä merkkijonon, joka on' << str_2 << endl;
}
muu {
cout << 'Stringiä ei löydy' << endl;
}
palata 0 ;
}



Lähtö:

Tämä annettu tulos renderöi, että merkkijono sisältää alimerkkijonon, ja näyttää sen tässä. Tarkistamme tämän käyttämällä 'find()' -toimintoa.

Esimerkki 2:

Tässä on kolme otsikkotiedostoa, jotka ovat 'iostream', 'string' ja 'cstring'. Kutsu sitten 'main()' sen jälkeen, kun olet asettanut 'namespace std'. 'new_str'-merkkijono on nyt ilmoitettu ja joitakin merkkijonotietoja on määritetty.

Seuraavaksi alustamme toisen 'merkkijono'-tietotyypin muuttujan nimeltä 'sub_str' ja annamme sille 'very'-arvon. Sitten asetamme 'const char*'. Joten osoittimen arvon muuttaminen osoittamaan toiseen paikkaan muistissa on mahdotonta. Ilmoitamme 'FindingStr'-muuttujan 'const char*' -osoittimeksi tässä. Alustamme sen 'strstr()'-menetelmällä ja välitämme molemmat merkkijonot yhdessä 'c_str()'-funktion kanssa, joka muuttaa merkkijonon merkkijonoksi, joka päättyy nolla-arvoon. Tämä 'strstr()'-menetelmä auttaa tarkistamaan, sisältääkö 'new_str' merkkijonon 'sub_str' vai ei. Sitten meillä on 'jos', johon lisäämme 'FindingStr'. Jos se löytää alimerkkijonon alkuperäisestä, 'if':n jälkeinen lauseke suoritetaan, kun käytämme 'cout'. Jos osamerkkijonoa ei löydy, se siirtyy suoraan kohti 'else' -osaa ja tulostaa tuloksen, joka sijoitetaan 'else'-osan jälkeen.

Koodi 2:

#include
#sisällytä
#include

käyttäen nimiavaruutta std;
int main ( )
{
merkkijono new_str = 'Ulkona sataa vettä ja sää on erittäin miellyttävä.' ;
merkkijono sub_str = 'erittäin' ;
const char * FindingStr = strstr ( new_str.c_str ( ) , sub_str.c_str ( ) ) ;
jos ( FindingStr ) {
cout << 'Löydämme merkkijonon ja merkkijono on:' << sub_str << endl;
}
muu {
cout << 'merkkijonoa ei löydy' << endl;
}
palata 0 ;
}

Lähtö:

Saatamme huomata, että annettu merkkijono sisältää alimerkkijonon, koska se näyttää lauseen, jonka lisäsimme 'if':n jälkeen, ja tulostaa alimerkkijonon tähän. Tarkistamme tämän käyttämällä strstr()-funktiota.

Esimerkki 3:

Alustamme tässä kaksi merkkijonomuuttujaa: 'myNewStr' ja 'mySubStr'. Sitten määritämme joitakin merkkijonotietoja ja määrittelemme kaksi kokonaislukumuuttujaa: 'posOfStr' ja 'indexOfStr'.

Tämän alapuolella käytämme 'while()'-silmukkaa ja määritämme 'find()'-funktiomuuttujan 'indexOfStr'-muuttujaan tämän 'while()'-silmukan sisällä. Välitämme tälle 'find()'-funktiolle kaksi muuttujaa, jotka ovat 'mySubStr' ja 'posOfStr'. Sitten asetamme 'npos'-avainsanan, joka tarkistaa, että 'find'-funktion tulos ei ole sama kuin 'npos'. Tämän jälkeen hyödynnetään 'cout', joka kasvattaa indeksin arvoa yhdellä ja tallentaa sen 'posOfStr'-muuttujaan.

Koodi 3:

#include
#sisällytä

käyttäen nimiavaruutta std;
int main ( ) {
merkkijono myNewStr = 'löydämme merkkijonon täältä' ;
merkkijono mySubStr = 'merkkijono' ;
int posOfStr = 0 ;
int indexOfStr;
sillä aikaa ( ( indexOfStr = myNewStr.find ( mySubStr, posOfStr ) ) ! = merkkijono::npos ) {
cout << 'Alamerkkijono on' << ''' << mySubStr << ''' << ' Löytyi indeksinumerosta : ' << indexOfStr << endl;
posOfStr = indexOfStr + 1 ;
}
palata 0 ;
}

Lähtö:

Tässä se osoittaa, että annettu merkkijono sisältää alimerkkijonon ja tämän merkkijonon indeksinumero on '19', joka näkyy myös tässä tuloksessa.

Esimerkki 4:

Tähän koodiin sisällytämme otsikkotiedoston 'bits/stdc++.h'. Nyt meidän ei tarvitse sisällyttää muita otsikkotiedostoja, koska ne sisältävät kaikki vaaditut kirjastot. Kun 'main()' on kutsuttu, alustamme 'string'-tietotyypin 'org_str' ja 'sub_str' muuttujat. Sitten lisäämme 'jos' -ehdon, jossa käytämme 'strstr()'-funktiota. Tämä toiminto etsii, sisältääkö annettu merkkijono halutun alimerkkijonon. Sitten lisäämme 'cout'-lauseen tulostamaan, että alimerkkijono löytyy täältä. Sitten laitamme myös 'else'-osan, joka suoritetaan vain, kun 'if'-ehto ei täyty tai alimerkkijonoa ei löydy merkkijonosta.

Tämän jälkeen ilmoitamme 'sub_str2'-muuttujan ja määritämme tähän merkkijonotiedot. Sitten lisätään 'if'-ehto ja käytetään 'strstr()'-funktiota. Tämä menetelmä etsii, sisältääkö toimitettu merkkijono pyydetyn alimerkkijonon. Tulos tulostetaan sitten tähän 'cout'-komennolla. Lisäämme myös 'else'-osion, joka suoritetaan vain, jos if-ehto ei täyty tai jos alimerkkijonoa ei löydy merkkijonosta.

Koodi 4:

#include
käyttäen nimiavaruutta std;
int main ( ) {
merkkijono org_str = 'C++ ohjelmointikieli' ;
merkkijono sub_str = 'Ohjelmoida' ;
jos ( strstr ( org_str.c_str ( ) ,sub_str.c_str ( ) ) )
{
cout << 'Alimerkkijono tässä on' << ''' << sub_str << ''' << 'on läsnä' << org_str << endl;
}
muu {
cout << 'Alimerkkijonoa ei ole merkkijonossa.' << endl;
}
merkkijono sub_str2 = 'Java' ;

jos ( strstr ( org_str.c_str ( ) ,sub_str2.c_str ( ) ) )
{
cout << 'Alimerkkijono tässä on' << ''' << sub_str2 << ''' << 'on läsnä' << org_str << endl;
}
muu {
cout << 'Alimerkkijonoa ei ole tässä merkkijonossa.' << endl;
}
palata 0 ;
}

Lähtö:

Ensimmäisen 'strstr()'-funktion tulos osoittaa, että merkkijono sisältää alimerkkijonon, mutta toisen 'strstr()' -funktion tulos osoittaa, että alimerkkijonoa ei ole merkkijonossa.

Johtopäätös

Käsite 'merkkijono sisältää alimerkkijonon' on tutkittu perusteellisesti tässä oppaassa. Tutkimme kahta menetelmää, jotka auttavat etsimään, sisältääkö 'merkkijono alimerkkijonon'. Selitimme 'find()'- ja 'strstr()'-funktiot, jotka C++ tarjoaa tässä oppaassa tämän tehtävän suorittamiseen. Esitämme ainutlaatuisilla esimerkeillä, joissa opimme käyttämään näitä toimintoja tarkistaaksemme, sisältääkö 'merkkijono' siinä olevan alimerkkijonon.