C ++ substring fra indeks til indeks

C ++ substring fra indeks til indeks
En understreng eller substring eller rekkevidde er bare en del av en sekvens av tegn i strengen bokstavelig. Å vite hva en substring er i C ++ er ikke tilstrekkelig for en programmerer. Programmereren må forstå hvordan man kan identifisere understrengen etter kode. Programmereren må vite hvordan man returnerer en substring. Programmereren må vite hvordan du sletter en substring. Programmereren må vite hvordan man erstatter en substring etter sletting.

En streng kan opprettes på to hovedmåter: av const char* (array-of-char) eller instantiering fra strengklassen. Når det. Å identifisere, returnere, slette og erstatte en substring i C ++, gjøres normalt bare med strengobjektet som er instantiert fra strengklassen.

Strengobjektet er en datastruktur med metoder (medlemsfunksjoner). Listen består av elementer, der hvert element har en karakter. Listeverdiene er tegnene. Som en matrise kan hvert tegn på strengobjektet nås med en indeks. Så en understreng kan identifiseres ved indekser: en lavere indeks og en høyere indeks. Området begynner fra den lavere indeksen til den høyere indeksen, unntatt den høyere indeksen. Karakteren for den høyere indeksen er ikke inkludert i området, og lengden på understrengen er fra karakteren til den lavere indeksen til karakteren rett før den for den høyere indeksen.

To iteratorer kan også identifisere en substring eller rekkevidde: den første iteratoren er for starten av rekkevidden, og den siste iteratoren, er for karakteren, som er like etter selve karakteren (eller ved slutten av strengen). Det er et enkelt forhold mellom iterator og indeks - se nedenfor.

Denne artikkelen forklarer hva en substring er og hvordan du kan identifisere, returnere, slette og erstatte en substring i C++.

Artikkelinnhold

  • Identifisere og returnere en substring
  • Relatert iterator og indeks
  • Slette en substring
  • Erstatte en substring
  • Konklusjon

Identifisere og returnere en substring

C ++ -klassen har en medlemsfunksjon kalt, substr () for sub-streng (). Syntaksen er:

Basic_String substr (size_type pos = 0, size_type n = npos) const

Denne funksjonen returnerer substringen som et strengobjekt. Det første argumentet indikerer indeksposisjonen der substringen begynner. Karakteren til POS er inkludert i substringen. Det andre argumentet gir lengden på substringen. Lengden er antall tegn som begynner fra POS. Det inkluderer ikke tegnet for den høyere indeksen. Den høyere indeksen er: POS + NPOS (selv om lengden, NPOS blir målt forskjøvet ett sted til venstre). Indekstelling begynner fra null. Følgende program illustrerer bruken av denne medlemsfunksjonen:

#inkludere
#inkludere
ved hjelp av navneområdet STD;
int main ()
String str = "one_two_three_four_five";
String substrin = str.substr (8, 5);
cout << substrin << endl;
retur 0;

Utgangen er:

tre

Hvis disse to argumentene er fraværende, blir hele strengen vurdert, som illustrert i det følgende programmet:

#inkludere
#inkludere
ved hjelp av navneområdet STD;
int main ()
String str = "one_two_three_four_five";
String substrin = str.substr ();
cout << substrin << endl;
retur 0;

Utgangen er:

en to tre fire fem

Det reserverte ordet, const på slutten av syntaksen, betyr at substr () -funksjonen kopierer understrengen og returnerer den. Det sletter ikke understrengen.

Relatert iterator og indeks

Når en iterator peker på et tegn, for å få iteratoren til slutten av området, er det bare å legge til lengden (antall) tegn for intervallet, og den nye iteratoren vil peke på slutten av området. Karakteren for denne siste iteratoren er ikke inkludert i rekkevidden eller substring. Rekkevidde og substring her er de samme tingene (de er det samme ovenfor). For funksjonen Substr () String Member er NPOS lengden på intervallet.

Iteratoren som tilsvarer indeks null er:

str.begynne()

NPOS kan legges til denne iteratoren for å peke på det siste elementet i området. Det siste elementet eller siste karakteren av området er ikke en del av substringen.

Iteratoren som tilsvarer poenget like etter strengens siste karakter er:

str.slutt()

NPOS kan trekkes fra dette for å peke på noen ønsket første tegn på strengen.

Begynn () og slutt () er medlemsfunksjonene til strengklassen.

Slette en substring

En substring er identifisert i et strengobjekt, med argumentene, POS og NPOs for substr () -funksjonen. Husk at statsminister er et intervall. Strengklassen har også en medlemsfunksjon som heter Erase (). Sletting () er i overbelastede former. En av de overbelastede slettingene () medlemsfunksjonene identifiserer substring med POS og NPOS. Syntaksen er:

BASIC_STRING & ERASE (Size_Type POS = 0, Size_Type N = NPOS)

Denne slettefunksjonen sletter underlaget og returnerer den opprinnelige strengen med substringen slettet.

Så for å slette en substring, er ikke substr () -funksjonen nødvendig. Det er argumentene som er nødvendige. For å slette en substring, bruk slette medlemsfunksjonen til strengobjektet. For å ha en kopi av Substring, bruker du bare substr () -funksjonen før du sletter. Følgende program viser en god måte å slette en substring på:

#inkludere
#inkludere
ved hjelp av navneområdet STD;
int main ()
String str = "one_two_three_four_five";
String substrin = str.substr (8, 5);
String ret = str.slette (8, 5);
cout <cout <cout <retur 0;

Utgangen er:

tre
one_two__four_five
one_two__four_five

En syntaks for å slette en substring med iteratorargumenter er:

iterator erase (const_iterator først, const_iterator sist)

Med dette identifiseres begynnelsen på substringen først av iteratoren, tilsvarende indeksen, POS. For å oppnå slutten av substringen blir iteratoren identifisert av sist, som oppnås ved å gjøre, First + NPOS. Kodingen for å slette en substring ved hjelp av denne overbelastede slettingsfunksjonsvarianten er igjen som en øvelse for leseren.

Erstatte en substring

Det som virkelig identifiserer en substring er argumentene: POS og NPOS. For å returnere en Substring, bruk strengklassefunksjonen, Substr (). For å slette en substring, bruk strengklassefunksjonen, slette (). Og for å erstatte en substring med en av hvilken som helst lengde, bruk strengklassefunksjonen, erstatt (). Erstatningsfunksjonen har mange overbelastede varianter. Den som bruker indeks er:

BASIC_STRING & STOPP (Size_Type POS1, Size_Type N1, Const T&T)

Der POS1 er POS, er N1 NPOS, og T er en uavhengig matrise-av-sjarer for erstatning. Den returnerer den opprinnelige strengen, inkludert erstatningen.

Merk: I C ++ skal en substring ikke slettes (slettes) før den byttes ut.
Følgende program viser en god måte å erstatte en substring på:

#inkludere
#inkludere
ved hjelp av navneområdet STD;
int main ()
String str = "one_two_three_four_five";
char chs [] = "ccc";
String substrin = str.substr (8, 5);
String ret = str.erstatte (8, 5, CHS);
cout <cout <cout <retur 0;

Utgangen er:

tre
ONE_TWO_CCC_FOUR_FIVE
ONE_TWO_CCC_FOUR_FIVE

Erstatningen for koden ovenfor var mindre enn 5 tegn. Følgende program viser saken der erstatningen er større enn 5 tegn:

#inkludere
#inkludere
ved hjelp av navneområdet STD;
int main ()
String str = "one_two_three_four_five";
char chs [] = "cccccccc";
String substrin = str.substr (8, 5);
String ret = str.erstatte (8, 5, CHS);
cout <cout <cout <retur 0;
tre
ONE_TWO_CCCCCCCC_FOUR_FIVE
ONE_TWO_CCCCCCCC_FOUR_FIVE

En syntaks for å erstatte en substring med iteratorargumenter er:

Basic_String & erstatning (const_iterator i1, const_iterator I2, const t & t)

Med denne syntaksen identifiseres begynnelsen på substringen av iteratoren, I1, som tilsvarer indeksen, POS. For å oppnå slutten av substring. t har samme betydning som ovenfor. Følgende program viser hvordan du bruker denne syntaks:

#inkludere
#inkludere
ved hjelp av navneområdet STD;
int main ()
String str = "one_two_three_four_five";
String :: const_iterator itb = str.begynne();
String :: const_iterator itpos = itb + 8;
String :: const_iterator itnpos = itpos + 5;
char chs [] = "ccccc";
String substrin = str.substr (8, 5);
String ret = str.erstatte (itpos, itnpos, chs);
cout <cout <cout <retur 0;

Utgangen er:

tre
ONE_TWO_CCCCC_FOUR_FIVE
ONE_TWO_CCCCC_FOUR_FIVE

Merk at iteratorene som brukes er konstante iteratorer. Iteratoren som tilsvarer indeksen, POS, er oppnådd med ITB + 8. Iteratoren som tilsvarer den høyere indeksen oppnås med ITPOS + 5.

Konklusjon

En understreng eller substring eller rekkevidde er bare en del av en sekvens av tegn i en streng bokstavelig. For å returnere en Substring, bruk strengklassefunksjonen, Substr (). For å slette en substring, bruk strengklassefunksjonen, slette (). For å erstatte en substring, bruk strengklassemedlemmer, erstatt (). For alle disse funksjonene er indeksargumentet, POS og indeksintervallet, NPOS, nøkkelen til å identifisere hovedstrengens substring.