C ++ strengvisning

C ++ strengvisning
Indekstelling av strengtegn begynner fra null (ikke en). Et strengområde er en kontinuerlig sekvens av tegn fra en streng bokstavelig. Hele strengen er ett stort område. Mindre områder kan fås fra en streng. Ideen med en strengvisning er å skaffe et bestemt område fra en streng, slik at området er som en uavhengig streng hvis egen det første tegnet er på Index Zero. Selv om et streng-visningsobjekt kan stå alene, er det offisielt et utvalg og kan ikke endres vanligvis.

Stringvisning er en klasse av sitt eget bibliotek som bør inkluderes i et C ++ -program som følger:

#inkludere

Den har medlemsfunksjoner som er blitt kategorisert under følgende overskrifter: konstruksjon, kapasitet, elementtilgang, iteratorstøtte, modifikatorer, strengoperasjoner og søk. Merkelig nok har String_view modifikatorer, som er i konflikt med definisjonen. Som er avklart nedenfor i denne opplæringen. All strengvisningskode i denne opplæringen er i C ++ Main () -funksjonen.

Artikkelinnhold

  • Konstruksjon
  • Kapasitet
  • Elementtilgang
  • Iteratorstøtte
  • Modifiserere
  • Strengoperasjoner
  • Søker
  • Konklusjon

Konstruksjon
basic_string_view (const chart* str)

Dette konstruerer et strengbilde, fra en hel streng bokstavelig, av konstant-peker-til-karaktører. Følgende, illustrerer dette:

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

const char* str = "en to tre fire fem";
String_view strv (str);
cout <retur 0;

Utgangen er:

en to tre fire fem

Legg merke til at String_View, i stedet for Basic_String_View, har blitt brukt til konstruktørnavnet.

Basic_String_View (const Chart* str, size_type len)

Denne medlemsfunksjonen Windows de første Len -tegnene i strengargumentet. Vinduing kopierer ikke. Ingen String-View Constructor Copies. De refererer bare til. Følgende program viser dette:

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

const char* str = "en to tre fire fem";
String_view strv (str, 13);
cout <retur 0;

Utgangen er:

en to tre

Basic_String_View (const Basic_String_view &)

Denne konstruktøren er den samme som den første konstruktøren ovenfor, men argumentet er et String_view -objekt, som allerede hadde sitt syn. Følgende program illustrerer dette:

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

const char* str = "en to tre fire fem";
String_view strv (str, 13);
String_view strvv (strv);
cout <retur 0;

Utgangen er:

en to tre

Basic_String_View & Operator = (const Basic_String_view &)

Denne medlemskonstruktøren er lik det ovennevnte, men String_view er tildelt og ikke bestått som et argument. Følgende program illustrerer dette:

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

const char* str = "en to tre fire fem";
String_view strv (str, 13);
String_view strvv = strv;
cout <retur 0;

Utgangen er:

en to tre

Kapasitet
størrelse_type størrelse () const

Husk at en String_View er et område fra en original streng. Det er ikke en kopi av serien. Den har referanser til karakterelementene i området i den opprinnelige strengen. Størrelsen på denne String_view (vindusvisningen) kan fremdeles bestemmes fordi String_view er et objekt som er instantiert fra String_view -klassen. Størrelsen returneres av størrelsen () medlemsfunksjonen. Følgende program demonstrerer dette:

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

const char* str = "en to tre fire fem";
String_view strv (str, 13);
int sz = strv.størrelse();
cout <retur 0;

Utgangen er:

1. 3

bool tom () const

Et String_View -objekt kan opprettes tomt, som vist i følgende program. Når det er tomt, vil den tomme () medlemsfunksjonen komme tilbake; Ellers vil det komme tilbake usant. Programmet er:

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

String_view strv;
bool bl = strv.tømme();
cout <retur 0;

Utgangen er 1, for sann. Merk at String_view -objektet ble opprettet uten parenteser og uten noe argument.

Elementtilgang
const_reference operatør [] (size_type pos) const

Den firkantede brakettoperatøren kan brukes til å lese en verdi (karakter) i String_view. Følgende program bruker en for-loop for å illustrere dette:

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

const char* str = "en to tre fire fem";
String_view strv (str, 13);
for (int i = 0; i cout <cout <retur 0;

Utgangen er:

en to tre

Merk: Et tegn i et String_View -objekt kan ikke endres. Enhver mulig endring bør gjøres i den opprinnelige strengen.

Iteratorstøtte
const_iterator start () const

Denne medlemsfunksjonen returnerer en konstant iterator som peker på det første karakterelementet i String_view -objektet. Her betyr const_iterator at karakteren ikke kan endres. Iteratoren kan imidlertid økes for å peke på neste karakterelement; eller legg til et heltall som ligner et heltall til en indeks for å peke på et annet karakterelement foran. Følgende program illustrerer dette:

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

const char* str = "en to tre fire fem";
String_view strv (str, 13);
String_view :: const_iterator it = strv.begynne();
det ++;
det = det + 4;
cout <<*it <retur 0;

Utgangen er 'w'. Merk på at iteratoren er konstruert.

const_iterator end () const

Denne medlemsfunksjonen returnerer en konstant iterator som peker rett etter det siste tegnelementet i String_view -objektet. Iteratoren kan reduseres for å peke på det siste karakterelementet eller trekkes fra et heltall, på samme måte som å trekke et heltall fra en indeks, for å peke på et annet karakterelement i før. Her betyr const_iterator at karakteren ikke kan endres. Følgende program illustrerer dette:

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

const char* str = "en to tre fire fem";
String_view strv (str, 13);
String_view :: const_iterator it = strv.slutt();
den--;
det = det - 4;
cout <<*it <retur 0;

Utgangen er 'T'.

Modifiserere
void remove_prefix (size_type n)

Dette fjerner en første delstreng fra String_view, men den fjerner ikke noe tegn fra den originale strengen. Følgende program illustrerer dette:

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

const char* str = "en to tre fire fem";
String_view strv (str, 13);
cout <strv.remove_prefix (4);
cout <cout <retur 0;

Utgangen er:

en to tre
to tre
en to tre fire fem

void remove_suffix (size_type n)

Dette fjerner en siste delstreng fra String_view, men den fjerner ikke noe tegn fra den originale strengen. Følgende program illustrerer dette:

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

const char* str = "en to tre fire fem";
String_view strv (str, 13);
cout <strv.Fjern_Suffix (6);
cout <cout <retur 0;

Utgangen er:

en to tre
en to
en to tre fire fem

Strengoperasjoner
Size_Type Copy (Chart* s, size_type n, size_type pos = 0) const

Denne funksjonen kopierer en rekke tegn fra String_view-objektet (ikke den opprinnelige strengen) for å erstatte den første understrengen av en annen streng. Følgende program illustrerer dette:

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

char strb [] = "aaa bbb ccc ddd eee";
const char* str = "en to tre fire fem";
String_view strv (str, 13);
cout <strv.kopi (strb, 3, 4);
cout <cout <retur 0;

Utgangen er:

en to tre
To BBB CCC DDD EEE
en to tre fire fem

Det er to uavhengige strenger her. String_view er ikke en uavhengig streng. Det er et områdevindu for en av de uavhengige strengene. Legg merke til at medlemsfunksjonens første parameter, "Chart* s" betyr en matrise-av-chars og ikke en const-char* .

int sammenlign (basic_string_view s) const

Antall tegn på to String_Views sammenlignes her. Hvis den, ved å bruke medlemsfunksjonen sammenligne (), er høyere, returneres et positivt tall. Hvis tallene er like, returneres null. Hvis String_View -objektet som bruker medlemsfunksjonen har et lavere antall, returneres et negativt tall. Følgende program illustrerer dette:

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

const char* stra = "en to tre fire fem";
String_view Strva (Stra, 13);
cout <const char* strb = "aaa bbb ccc ddd eee";
String_view StrvB (Strb, 11);
cout <int ret = strvb.Sammenlign (STRVA);
cout <retur 0;

Utgangen er:

en to tre
AAA BBB CCC
-14, på forfatterens datamaskin.

Søker
størrelse_type funn (const chart* s, size_type pos = 0) const

Denne medlemsfunksjonen ser etter forekomsten av den første understrengen, i den aktuelle String_view. Den returnerer indeksen for den første karakteren av den understrengen som er funnet. Hvis ikke funnet, returnerer den -1. Det andre argumentet forteller hvor søket starter (standardindeks er 0). Følgende program illustrerer dette:

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

const char* str = "en to tre fire fem";
String_view strv (str, 13);
cout <const char* cs = "to";
int ret = strv.finn (cs, 0);
cout <retur 0;

Utgangen er:

en to tre
4

Konklusjon

En String_View er en vindusvisning av en rekke en original streng. Det er ikke en kopi av karakterene. Karakterene blir referert til. Det er en strengvisningsklasse som String_View -objekter blir instantiert. String-view har mange medlemsfunksjoner. De grunnleggende medlemsfunksjonene fra de forskjellige kategoriene er forklart ovenfor.