C ++ streng starter med

C ++ streng starter med
Det kommer en tid da programmereren må vite hva en streng starter med. Denne kunnskapen kan brukes til å velge eller eliminere elementer i en liste over tegn. Så en programmerer vil kanskje vite om en streng starter med en bestemt karakter eller med en bestemt understreng. En programmerer kan skrive kode som vil sjekke de opprinnelige tegnene til en streng, en-for-en, og sammenligne det med et prefiks-understreng. Imidlertid har alle strategiene som er involvert allerede blitt gjort av C ++ String Library.

C ++ strengklassen til strengbiblioteket har medlemsfunksjonen, starter_with (). Dette gjør arbeidet for programmereren, men programmereren trenger å vite hvordan du bruker funksjonen. Og det er grunnen til at denne opplæringen blir produsert. Det er tre varianter av strengstarter_with () medlemsfunksjon. Varianter av samme funksjon kalles overbelastede funksjoner.

Den grunnleggende tilnærmingen for start_with () medlemsfunksjonen er å sammenligne en kort uavhengig understreng med det første korte segmentet av den aktuelle strengen. Hvis de er de samme, returnerer funksjonen sann. Hvis de er forskjellige, returnerer funksjonen falsk.

FORSIKTIG: Starts_with () medlemsfunksjonen er en C ++ 20 -funksjon. I denne artikkelen er vi i dag i 2021, slik at kompilatoren din ikke lykkes med å samle kodeprøvene.

Artikkelinnhold

  • bool starter_with (diagram x) const
  • bool starter_with (const chart* x) const
  • bool starter_with (basic_string_view x) const
  • Konklusjon

bool starter_with (diagram x) const

Denne medlemsfunksjonen sjekker hvis strengen bokstavelig starter med et bestemt tegn. Husk at strengen bokstavelig må være av et objekt som er instantiert fra strengklassen. Følgende program sjekker om strengen starter med 'W' i store bokstaver:

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

Basic_String str = "Vi går videre.";
bool bl = str.starter_with ('w');
cout <retur 0;

Utgangen skal være 1, for sann.

Matching er saks følsom. Så utgangen fra følgende program skal være falsk:

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

Basic_String str = "Vi går videre.";
bool bl = str.starter_with ('w');
cout <retur 0;

Utgangen skal være 0 for falsk.

En streng kan også starte med en ikke-alfabetisk karakter. Følgende program sjekker om strengen starter med '[':

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

Basic_Stringstr = "[Merk: Merk informasjon - - -. - slutt note] ";
bool bl = str.begynner med('[');
cout <retur 0;

Utgangen skal være 1, for sann

bool starter_with (const chart* x) const

Programmereren vil kanskje vite om en rekke interesse starter med en bestemt uavhengig understreng. I dette tilfellet må han bruke denne medlemsfunksjonen. Følgende program illustrerer dette:

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

Basic_String str = "Vi går videre.";
const char* ss = "vi er";
bool bl = str.starts_with (ss);
cout <retur 0;

Utgangen skal være 1 for sann.

Matching er saksfølsom. Så utgangen fra følgende program, der den uavhengige understrengen har mer enn ett tegn, bør være falsk:

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

Basic_String str = "Vi går videre.";
const char* ss = "vi er";
bool bl = str.starts_with (ss);
cout <retur 0;

Utgangen skal være 0 for falsk.

En streng kan også starte med ikke-alfabetiske tegn. Følgende program sjekker hvis strengen starter med en bestemt understreng av tall:

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

Basic_StringSTR = "8762HT er et kodetall.";
const char* ss = "8762";
bool bl = str.starts_with (ss);
cout <retur 0;

Utgangen skal være 1, for sann.

bool starter_with (basic_string_view x) const

Strengvisning

Argumentet til Starts_with -medlemsfunksjonen kan være et String_view -objekt. Det neste spørsmålet er: "Hva er en String_view?”. En String_view er et område fra en original streng som blir listen over et nytt strengobjekt. Karakterene er ikke kopiert fra den originale strengen; de blir referert til. Det vil si at elementene i den opprinnelige strengen ikke er kopiert; de blir referert til. Imidlertid har dette strengbildet mange av funksjonene som strengklassen har. String_view er også en klasse som String_View -objekter er opprettet. Følgende program viser likheten i en String_view -klasse og en streng:

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

const char* str = "alt som går opp må komme ned.";
String_view Strv (str, 23);
for (int i = 0; i cout <cout <retur 0;

Utgangen er:

Alt som går opp

String_view -biblioteket måtte inkluderes. Merk at i erklæringen har String_view og ikke Basic_String_View blitt brukt. De første 23 tegnene i den originale strengen ble karakterene til String_view. Uttalelsen av programmet for konstruksjon av String_view -objektet er:

String_view Strv (str, 23);

Hvis et tegn i området for den opprinnelige strengen endres, endres også strengvisningen. Følgende program illustrerer dette:

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

char str [] = "alt som går opp må komme ned.";
String_view Strv (str, 23);
str [1] = 'a'; str [2] = 'r'; str [3] = 'l';
for (int i = 0; i cout <cout <retur 0;

Utgangen er:

Tidlig som går opp

Det første, andre og tredje tegn i den opprinnelige strengen ble endret etter at String_view -objektet var blitt erklært. Dette bekrefter at selv om String_view er et objekt, refererer det til et område i den opprinnelige strengen og ikke har en kopi av serien.

Teksten til den opprinnelige strengen kan gjøres konstant. For å oppnå dette, bruk en Const-peker til Char i stedet for en matrise-av-sjarer. Følgende program kompilerer ikke, og utsteder en feilmelding fordi teksten til den opprinnelige strengen er laget konstant:

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

const char* str = "alt som går opp må komme ned.";
String_view Strv (str, 23);
str [1] = 'a'; str [2] = 'r'; str [3] = 'l';
for (int i = 0; i cout <cout <retur 0;

Strengvisningsargument

Syntaksen for String_starts () -funksjonen er:

bool starter_with (basic_string_viewx) const

Hvordan lage et String_view -objekt er illustrert ovenfor. Etter å ha opprettet objektet, send det som et argument til starts_with () strengmedlemsfunksjon. Følgende program illustrerer dette:

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

const char* str = "alt som går opp må komme ned.";
String_view Strv (str, 23);
const char* ss = "alt";
bool bl = str.starts_with (ss);
cout <retur 0;

Utgangen skal være sant, for 1. Denne gangen er String- og String_view -bibliotekene inkludert.

Hvis programmereren ønsker å endre den opprinnelige strengen, må han bruke en matrise-av-chars som et argument for String_view-konstruktøren i stedet for en konstant peker til Char. Følgende program viser situasjonen, hvordan den opprinnelige strengen vil endre seg:

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

char str [] = "alt som går opp må komme ned.";
String_view Strv (str, 23);
str [5] = 'a'; str [6] = 'r'; str [7] = 'l'; str [8] = 'r'; str [9] = 'l';
const char* ss = "EveryApple";
bool bl = str.starts_with (ss);
cout <retur 0;

Utgangen skal være 1, for sann.

Selv om argumentet til start_with () medlemsfunksjonen er et String_view -objekt, blir foringsrøret fortsatt respektert. Følgende program illustrerer dette:

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

char str [] = "alt som går opp må komme ned.";
String_view Strv (str, 23);
const char* ss = "alt";
bool bl = str.starts_with (ss);
cout <retur 0;

Utgangen skal være 0 for falsk. Den første 'E' i understrengen er i små bokstaver, mens den første 'E' i strengen med interesse er i store bokstaver.

Hvis argumentet til starts_with () medlemsfunksjonen er en String_view, kan ikke-alfabet-tegn fortsatt være en del av strengene. I det følgende programmet blir et sett med påfølgende heltallkarakterer sjekket hvis de starter strengen av interesse, der Start_with () -argumentet er en String_view:

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

const char* str = "8762ht er et kodetall.";
String_view strv (str);
const char* ss = "8762";
bool bl = str.starts_with (ss);
cout <retur 0;

Utgangen skal være 1 for sann.

Konklusjon

Strengklassen i C ++ har en medlemsfunksjon kalt start_with (). Den sjekker om en sub-uavhengig streng, danner de første tegnene i en streng med interesse (prefiks). De overbelastede medlemsfunksjonene er starts_with (diagram x), starts_with (const chart* x), og starter_with (String_view x). Hver returnerer en bool.

Chrys