C ++ streng erstatning

C ++ streng erstatning
C ++ streng erstatte omhandler å lokalisere en bestemt understreng i en målstreng og deretter erstatte den. En streng kan opprettes på to hovedmåter: ved å bruke en konstant karakterpeker (char -matrise) eller instruentere den fra strengklassen. Strengklassen har en erstatning () medlemsfunksjon. Dette gjør lokaliseringen og erstatningen. Å finne og erstatte gjøres med instantierte strengobjekter og ikke strenger opprettet ved hjelp av en konstant karakterpeker.

Strengobjektet er en datastruktur, og hovedkomponenten er en liste. Hver celle på denne listen har et tegn. Den totale sekvensen av tegn danner den bokstavelige strengen. Hver karakterposisjon kan nås med en indeks eller av en iterator. Indekstelling begynner fra null. En iterator er en utdypet peker.

C+ String -klassen har forskjellige varianter av erstatningsmedlemmet Funksjon (). Et slikt sett med funksjoner kalles overbelastede funksjoner. Denne artikkelen forklarer hvordan du bruker forskjellige overbelastede streng erstatning () medlemsfunksjoner.

Følgende målstreng vil bli brukt for alle eksemplene:

"Planeten vår har 24 timer i døgnet.""

Elementet (karakteren) til et strengobjekt kan enten nås med en referanse eller av en iterator. C ++ 20 har faktisk 14 overbelastet erstatning () medlemsfunksjoner for strengklassen. Med syv av disse funksjonene er det tilgjengelig elementene som referanse, mens med de syv andre får elementene tilgang til en iterator.

Funksjonene med syv medlemmer, som elementene får tilgang til med referanse, vil bli forklart i denne artikkelen. Bare en for de resterende syv, for iteratorer, vil bli forklart. Med kunnskapen om den, som iteratoren får tilgang til elementer, kan leseren utlede forklaringen for de resterende seks.

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

Denne medlemsfunksjonen går til indeksen ved POS1, måler deretter en understreng av lengde N1 (som begynner fra POS1) og erstatter den med en annen uavhengig understreng av matrise-av-sjarer. Understrengen skal erstattes, og understrengen trenger ikke å være av samme lengde. Følgende program illustrerer dette:

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

Strengmål = streng ("Planeten vår har 24 timer i døgnet.");
Char erstatning [] = "Solar Home";
Strengresultat = mål.erstatte (4, 6, erstatning);
cout << result << endl;
retur 0;

Utgangen er:

Vårt solhjem har 24 timer i døgnet.

Den returnerte strengen er et strengobjekt. For å bruke erstatning () medlemsfunksjonen til strengklassen, må strengbiblioteket inkluderes i programmet (med et direktiv).

Merk: All strengkode for denne artikkelen er i C ++ hovedfunksjonen.

Basic_String & erstat

Denne medlemsfunksjonen er nesten den samme som ovennevnte. Den går til indeksen ved POS, måler en understrenging av lengde N1 (fra POS), og erstatter den med en annen uavhengig understreng av en konstant peker-til-sjar. Den erstattede understrengen og erstatningen trenger ikke å være av samme lengde. Følgende program illustrerer dette:

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

Strengmål = streng ("Planeten vår har 24 timer i døgnet.");
const char* erstatning = "solhjem";
Strengresultat = mål.erstatte (4, 6, erstatning);
cout << result << endl;
retur 0;

Utgangen er:

Vårt solhjem har 24 timer i døgnet.

BASIC_STRING & STOPP (Size_Type POS1, Size_Type N1, Const Basic_String & Str)

Denne medlemsfunksjonen ligner på ovennevnte. Imidlertid er erstatningsstrengen et strengobjekt, instantiert fra strengklassen. Følgende program illustrerer dette:

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

Strengmål = streng ("Planeten vår har 24 timer i døgnet.");
String erstatning = String ("Solar Home");
Strengresultat = mål.erstatte (4, 6, erstatning);
cout << result << endl;
retur 0;

Utgangen er:

Vårt solhjem har 24 timer i døgnet.

BASIC_STRING & STOPP (Size_Type POS, Size_Type N1, Size_Type N2, Chart C)

Denne medlemsfunksjonen ligner på ovennevnte. Imidlertid er den erstatningsstrengen den samme karakteren, gjentatte n2 ganger. Merk at det er fire parametere for denne funksjonen. Følgende program illustrerer bruken:

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

Strengmål = streng ("Planeten vår har 24 timer i døgnet.");
Strengresultat = mål.erstatte (4, 6, 3, 'e');
cout << result << endl;
retur 0;

Utgangen er:

Eee -en vår har 24 timer i døgnet.

"Planet" ble erstattet av tre E -er (for jorden).

BASIC_STRING & STOPP (Size_Type POS, Size_Type N1, Const Chart* S, Size_Type N2)

Denne medlemsfunksjonen ligner på ovennevnte. Erstatningsstrengen er imidlertid en konstant peker til chars, hvis første N2 -tegn brukes til erstatning. Følgende program illustrerer dette:

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

Strengmål = streng ("Planeten vår har 24 timer i døgnet.");
const char* erstatning = "Earth World";
Strengresultat = mål.erstatte (4, 6, erstatning, 5);
cout << result << endl;
retur 0;

Utgangen er:

Jorden vår har 24 timer i døgnet.

BASIC_STRING & STOPP (Size_Type POS1, Size_Type N1, Const T&T, Size_Type POS2, Size_Type N2 = NPOS)

Denne medlemsfunksjonen ligner på ovennevnte. Imidlertid er den erstatningsstrengen en matrise-av-sjarer hvis N2-tegn brukes til erstatning, fra en plassering av den erstatningsstrengen, POS2, som ikke nødvendigvis er null. Hvis det fjerde argumentet for denne funksjonen er fraværende, vil antallet tegn for erstatning være fra POS2 til slutten av array-of-chars; Ellers vil det være N2 -tegn fra pos2. Følgende program illustrerer dette:

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

Strengmål = streng ("Planeten vår har 24 timer i døgnet.");
char erstatning [] = "jordens verden";
Strengresultat = mål.erstatte (4, 6, erstatning, 4, 5);
cout << result << endl;
retur 0;

Utgangen er:

Jorden vår har 24 timer i døgnet.

BASIC_STRING & STOPP (Size_Type POS1, Size_Type N1, Const Basic_String & Str, Size_Type POS2, Size_Type N2 = NPOS)

Denne medlemsfunksjonen ligner på ovennevnte. Imidlertid er erstatningsstrengen et strengobjekt, instantiert fra strengklassen. Følgende kode illustrerer dette:

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

Strengmål = streng ("Planeten vår har 24 timer i døgnet.");
String erstatning = String ("The Earth World");
Strengresultat = mål.erstatte (4, 6, erstatning, 4, 5);
cout << result << endl;
retur 0;

Utgangen er:

Jorden vår har 24 timer i døgnet.

Basic_String & erstatning (const_iterator i1, const_iterator i2, const Basic_string & Str)

Denne medlemsfunksjonen går til elementet (karakteren) til målstrengen, pekt på av iteratoren, I1; Den vurderer deretter karakterer opp til den ene som er pekt på, av iteratoren, I2. Dette området skal erstattes av alle tegnene i et strengobjekt, instantiert fra en klasse. Følgende program illustrerer dette:

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

Strengmål = streng ("Planeten vår har 24 timer i døgnet.");
String erstatning = String ("Solar World");
String :: iterator it1 = mål.begynne();
it1 = it1 + 4;
String :: iterator it2 = mål.begynne();
it2 = it2 + 10;
Strengresultat = mål.Erstatt (IT1, IT2, erstatning);
cout << result << endl;
retur 0;

Utgangen er:

Solverdenen vår har 24 timer i døgnet.

Det siste elementet i området, som ble pekt på av den andre iteratoren, deltok ikke i erstatningen; Det var bare den øvre avgrenseren.

To iteratorer, IT1 og IT2, har blitt brukt. Hver har blitt oppnådd fra startklassen Begin (). Begynnende () Medlemsfunksjon returnerer en iterator, som peker på det første elementet i strengobjektet. For å få det til å peke på 'p' av "planet" ved indeks 4 i målstrengen, måtte IT1 økes med 4. For å få det til å peke på "like etter" planet "ved indeks 10 i målstrengen, måtte IT2 økes med 10.

Konklusjon

Det er en understrenging av listen over et strengobjekt, instantiert fra en strengklasse, som blir vurdert for erstatning. En substring av en streng erklært som matrise-av-sjarer eller konstant peker til chars er ikke vurdert for erstatning. Erstatningsstrengen er en annen uavhengig streng. Hele strengen bokstavelig av erstatningsstrengen kan gjøre erstatningen, eller en del av den kan fortsatt gjøre erstatningen. C ++ 20 -strengklassen har 14 medlemmer overbelastede funksjoner for erstatning, hvorav 8 er forklart ovenfor.