C ++ String find_first_of

C ++ String find_first_of

I C ++ find_first_of, som angår en målstreng, betyr: Finn den første forekomsten av en sekvens av tegn, i målstrengen. En bestemt understreng kan forekomme mer enn en gang. Så jobben til find_first_of () funksjon er å finne den første forekomsten av den aktuelle understrengen i målstrengen.

Tenk på strengen,

"Det er som aldri sier aldri igjen.""

Den første karakteren, 'jeg' er på indeks null. Den andre, 'T' er på indeks 1; Den tredje, som er et rom, er på indeks 2; den fjerde, 'jeg' er på indeks 3; og så videre. “Aldri” forekommer to ganger i strengen bokstavelig. 'n' for den første "aldri" forekommer ved indeks 11. 'n' for den andre "aldri" forekommer ved en høyere indeks. Så den første forekomsten av “Never” starter på indeks 11.

Strengen ovenfor må være listen over et strengobjekt konstruert fra en strengklasse. Et C ++ -program for å bruke C ++ Find_First_Of () -funksjonen skal begynne med:

#inkludere
#inkludere
ved hjelp av navneområdet STD;

Strengbiblioteket er inkludert. find_first_of () er en medlemsfunksjon av strengklassen. All kode for strengen for denne artikkelen gjøres i Main () -funksjonen.

Det er fem varianter av find_first_of () funksjon. Når det er mer enn en variant av en funksjon, sies funksjonen å være overbelastet. Denne artikkelen forklarer hvordan du bruker det overbelastede find_first_of () medlemsfunksjoner.

size_type find_first_of (diagram C, size_type pos = 0)

Denne funksjonen returnerer indeksen for den første forekomsten av et bestemt tegn (understreng av ett tegn) i målstrengen. Den første parameteren refererer til karakteren. Den andre parameteren indikerer at søket starter fra indeks 0 (standard). Konstruksjonen (instantiering) av målstrengobjektet kan være:

String str = "Det er det som aldri sier aldri igjen.";

La karakteren bli søkt etter, være 'n'. 'n' forekommer mer enn en gang. I dette tilfellet er den returnerte posisjonen 11, ettersom den første 'n' er ved indeks 11.

Følgende kode illustrerer bruken av denne funksjonen, der argumentet for den første parameteren er en identifikator:

String str = "Det er det som aldri sier aldri igjen.";
char ss = 'n';
int i = str.find_first_of (ss);
cout << i << endl;

Utgangen er 11.

Den andre parameteren, “size_type pos = 0” i funksjonen betyr at søket begynner fra null. Hvis søket skulle begynne fra en indeks etter den første 'n', ville indeksen for den andre 'n', blitt returnert. Følgende program illustrerer dette med at det første argumentet er bokstavelig.

#inkludere
#inkludere
ved hjelp av navneområdet STD;
int main ()

String str = "Det er det som aldri sier aldri igjen.";
int i = str.find_first_of ('n', 17);
cout << i << endl;
retur 0;

Utgangen er 21.

size_type find_first_of (const chart* s, size_type pos = 0)

Denne funksjonen returnerer indeksen for den første karakteren av den første forekomsten av en bestemt understreng (sekvens av tegn) i målstrengen. Den første parameteren refererer til en konstant peker av karaktersekvens (understreng). Den andre parameteren indikerer at søket starter fra indeks 0 (standard, når parameteren er fraværende). Utgangen fra følgende program er 11, med søk som begynner fra null:

#inkludere
#inkludere
ved hjelp av navneområdet STD;
int main ()

String str = "Det er det som aldri sier aldri igjen.";
const char* ss = "aldri";
int i = str.find_first_of (ss);
cout << i << endl;
retur 0;

size_type find_first_of (const t & t, size_type pos = 0)

Denne funksjonen returnerer indeksen for den første karakteren av den første forekomsten av en bestemt understreng (sekvens av tegn), i målstrengen. Den første parameteren refererer til en matrise-av-sjar. Den andre parameteren indikerer at søket starter fra indeks 0 som standard. Utgangen fra følgende program er 11, med søk som begynner fra null:

#inkludere
#inkludere
ved hjelp av navneområdet STD;
int main ()

String str = "Det er det som aldri sier aldri igjen.";
char ss [] = "aldri";
int i = str.find_first_of (ss);
cout << i << endl;
retur 0;

Utgangen er 11. Uttalelsen,

char ss [] = "aldri";
kunne like godt ha vært,
char ss [] = 'n', 'e', ​​'v', 'e', ​​'r', '\ 0';

Legg merke til NUL -karakteren, '\ 0' og dens posisjon. Den bokstavelige, 'n', 'e', ​​'v', 'e', ​​'r', '\ 0' kan brukes i koden i stedet for identifikatoren SS, som i følgende program:

#inkludere
#inkludere
ved hjelp av navneområdet STD;
int main ()

String str = "Det er det som aldri sier aldri igjen.";
int i = str.find_first_of ('n', 'e', ​​'v', 'e', ​​'r', '\ 0');
cout << i << endl;
retur 0;

Utgangen er fortsatt 11, som den skal.

size_type find_first_of (const basic_string & str, size_type pos = 0)

Denne funksjonen ligner på det ovennevnte, men det første argumentet er et strengobjekt konstruert fra strengklassen. I det følgende programmet er det første argumentet identifikatoren til et strengobjekt konstruert fra strengklassen (søket begynner fra null):

#inkludere
#inkludere
ved hjelp av navneområdet STD;
int main ()

String str = "Det er det som aldri sier aldri igjen.";
String ss = "aldri";
int i = str.find_first_of (ss);
cout << i << endl;
retur 0;

Utgangen er 11. Argumentet kunne ha vært strengkonstruksjonen, jeg.e. streng (“aldri”) som i:

#inkludere
#inkludere
ved hjelp av navneområdet STD;
int main ()

String str = "Det er det som aldri sier aldri igjen.";
int i = str.find_first_of (streng ("aldri"));
cout << i << endl;
retur 0;

Utgangen er 11 her. Husk at et strengobjekt fremdeles kan konstrueres som følger:

String ss = "aldri";

Så for denne funksjonen kan det første argumentet fremdeles være et streng bokstavelig, som i følgende program:

#inkludere
#inkludere
ved hjelp av navneområdet STD;
int main ()

String str = "Det er det som aldri sier aldri igjen.";
int i = str.find_first_of ("aldri");
cout << i << endl;
retur 0;

Utgangen er 11.

size_type find_first_of (const chart* s, size_type pos, size_type n)

Denne funksjonen ligner på ovennevnte. Hvis det tredje argumentet er mindre enn eller lik størrelsen på understrengen, men større enn 0, returnerer funksjonen det forventede tallet. Følgende kode viser bruken av det tredje argumentet:

#inkludere
#inkludere
ved hjelp av navneområdet STD;
int main ()

String str = "Det er det som aldri sier aldri igjen.";
int i = str.find_first_of ("Never", 17, 4);
cout << i << endl;
retur 0;

Utgangen er 21.

Sekvens ikke funnet

Hva om understrengen ikke blir funnet? Tenk på følgende program:

#inkludere
#inkludere
ved hjelp av navneområdet STD;
int main ()

String str = "Det er det som aldri sier aldri igjen.";
int i = str.find_first_of ("bcdfu");
cout << i << endl;
retur 0;

Utgangen er -1. Hvis sekvensen (sub -streng) ikke har noen karakter i målstrengen, er funksjonens returverdi -1 -1. Hvis sekvensen er den tomme strengen, er returverdien fremdeles -1.

Tenk på sekvensen,

“Uehydyw”

Og målstrengen,

“Det er det som aldri sier aldri igjen.”

'H' i understrengen, er den første karakteren i understrengen som oppstår først i målstrengen. Det forekommer ved indeks 7 i målstrengen.

Så indeksen som returneres fra målstrengen, er den første karakteren til understrengen som samsvarer med den første forekomsten av seg selv i målstrengen. Følgende program illustrerer dette:

#inkludere
#inkludere
ved hjelp av navneområdet STD;
int main ()

String str = "Det er det som aldri sier aldri igjen.";
int i = str.find_first_of ("uehydyw");
cout << i << endl;
retur 0;

Utgangen er 7.

Hva om sekvensen av tegn er lengre enn målstrengen? Tenk på følgende program:

#inkludere
#inkludere
ved hjelp av navneområdet STD;
int main ()

String str = "abcde";
int i = str.find_first_of ("abcdefghijk");
cout << i << endl;
retur 0;

Utgangen er 0. Dette er fordi målstrengen faktisk er den første sekvensen av tegn i sekvensen (understreng). Og hva om sekvensen var lengre enn målstrengen og det ikke finnes noen karakter av sekvensen i målstrengen? Vurder følgende:

#inkludere
#inkludere
ved hjelp av navneområdet STD;
int main ()

String str = "abcde";
int i = str.find_first_of ("fghijklmnop");
cout << i << endl;
retur 0;

Utgangen er -1, fremdeles i samsvar med det faktum at hvis sekvensen ikke finnes i målstrengen, så vil returverdien til funksjonen være -1.

Konklusjon

find_first_of () er en medlemsfunksjon av strengklassen. Den returnerer indeksen for den første forekomsten av en sekvens av tegn som finnes i en målstreng. Indekstelling begynner fra 0. Denne sekvensen kan kalles en understreng. Hvis en sekvens ikke blir funnet, returneres -1. De find_first_of () Medlemsfunksjonen er overbelastet på fem måter. De forskjellige overbelastede funksjonene tar forskjellige karaktersekvensformater. For alle disse overbelastede funksjonene er det standard å søke fra 0. Imidlertid har hver et argument som kan tillate at søk kan begynne fra hvilken som helst indeks fremover.