Slik bruker du C ++ String Class

How Use C String Class



En streng bokstavelig er en sekvens av tegn i en konstant matrisepeker avsluttet med nul -tegnet, 0. Når den identifiseres med en variabel, kan strengen bokstavelig talt ikke virkelig redusere eller øke lengden. Mange operasjoner kan ikke utføres på strengen bokstavelig talt. Så det er behov for en strengklasse. C ++ strengklassen er for en datastruktur, en samling tegn i rekkefølge, som lar medlemsfunksjoner og operatører handle på karakterene. Strengklassen tillater flere manipulasjoner på den tilsvarende strengen bokstavelig, enn bare strengen bokstavelig. Du må ha god kunnskap om streng bokstavelig talt for å forstå denne artikkelen.

Klasse og objekter

En klasse er et sett med variabler og funksjoner som fungerer sammen; hvor variablene ikke har verdier tilordnet. Når verdier er tilordnet variablene, blir klassen et objekt. Ulike verdier gitt til samme klasse resulterer i forskjellige objekter; det vil si at forskjellige objekter er samme klasse med forskjellige verdier. Det sies å lage et objekt fra en klasse for å instantere objektet.







Navnet, streng, er en klasse. Et objekt opprettet fra strengklassen har et programmerer valgt navn.



En funksjon som tilhører klassen er nødvendig for å instantiere et objekt fra klassen. I C ++ har den funksjonen samme navn som navnet på klassen. Objekter som er opprettet (instantiert) fra klassen har forskjellige navn gitt dem av programmereren.



Å lage et objekt fra en klasse betyr å konstruere objektet; det betyr også instantiating.





Et C ++ - program som bruker strengklassen, starter med følgende linjer øverst i filen:

#inkludere
#inkludere
ved hjelp av navneområde std;

Den første linjen er for input/output. Den andre linjen er å la programmet bruke alle funksjonene i strengklassen. Den tredje linjen lar programmet bruke navnene i standardnavnområdet.



Overbelastning av en funksjon

Når to eller flere forskjellige funksjonssignaturer har samme navn, sies det at navnet er overbelastet. Når en funksjon kalles, bestemmer antallet og typen argumenter hvilken funksjon som utføres.

Konstruksjon

streng ()
Følgende setning konstruerer en streng med null lengde uten tegn.

streng strCol=streng();

Det begynner med navnet på klassen (objekttype), streng. Dette etterfølges av navnet på objektstrengen, gitt av programmereren. Oppdragsoperatøren følger; deretter navnet på konstruktøren med tomme parenteser. Her er strCol det instantierte objektet med alle datamedlemmene (egenskaper) og medlemsfunksjoner (metoder).
streng (str)
Dette ligner det ovennevnte, men tar enten en streng bokstavelig eller en identifikator som et argument i konstruktøren. Følgende uttalelse illustrerer dette:

streng strCol=streng('Jeg elsker deg');

Konstruksjon med initialiseringsliste

Følgende kode illustrerer dette:

streng strCol=streng({'JEG','','de','eller','v','Og','','og','eller','du',' 0'});

Strengen bokstavelig talt er jeg elsker deg. Legg merke til nul -tegnet på slutten av initialiseringslisten.

streng (str, n)

Dette danner en strengsamling av de første n tegnene i en annen streng. Følgende kode illustrerer dette:

røyes[] = 'Jeg elsker deg';
streng strCol=streng(s, 6);
koste<<strCol<< ' n';

Utgangen er I love med de første 6 karakterene fra I love you. Husk: enkeltrommet er et tegn.

streng (str, pos, n)

Dette danner en strengsamling med n tegn, som begynner fra den nullbaserte indekserte posisjonen pos i en annen streng. Følgende kode illustrerer dette:

røyes[] = 'Jeg elsker deg';
streng strCol=streng(s, 2, 4);
koste<<strCol<< ' n';

Utgangen er, kjærlighet.

For de to ovennevnte tilfellene, hvis n er større enn størrelsen på strengen, blir out_of_range -unntaket kastet - se senere.

streng (n, 'c')

Danner en samling med n tegn, der alle tegnene er like. Ta i betraktning,

streng strCol=streng(5,'Og');
koste<<strCol<< ' n';

Utgangen er, eeeee, 5 e’er.

Tilordne en streng

En streng kan tilordnes som følger etter å ha erklært begge strengene:

streng strCol1=streng('Jeg elsker deg');
streng strCol2;
strCol2=strCol1;
koste<<strCol2<< ' n';

Utgangen er, jeg elsker deg.

Konstruerer med Iterator

En iterator gir en generisk fremstilling av skanning, gjennom verdiene til en samling. En syntaks for å lage en streng med iterator, er:

mal<klasse InputIterator>
basic_string(InputIterator begynner,InputIterator -slutt, konstAllokator&
til=Allokator());

Dette konstruerer en streng for området [begynn, slutt) - se detaljer senere.

Ødelegger en streng

For å ødelegge en streng, bare la den gå utenfor rekkevidden.

Tilgang til strengklasseelement

Et øyeblikkelig strengobjekt kan være sub-scriptet (indeksert) som en matrise. Indekstelling begynner fra null.

stringName [i]

Operasjonsstrengenavn [i] returnerer en referanse til tegnet (elementet) på ithindeks over tegnsamlingen. Følgende kodeutganger v:

streng strCol=streng('Jeg elsker deg');
røyekap=strCol[4];
koste<<kap<< ' n';

stringName [i] konst

Operasjonen stringName [i] const kjøres i stedet for stringName [i] når strengobjektet er et konstant objekt. Den brukes for eksempel i følgende kode:

konststreng strCol=streng('Jeg elsker deg');
røyekap=strCol[4];
koste<<kap<< ' n';

Uttrykket returnerer en konstant referanse til ithelement i strengobjektet. Ingen av elementene i strengen kan endres.

Tilordne et tegn med abonnement

Et tegn kan tilordnes et ikke-konstant strengobjekt på følgende måte:

streng strCol=streng('Jeg ringer');
strCol[2] = 'f';
koste<<strCol<< ' n';

Utgangen er jeg faller. 'C' ble endret til 'f'.

stringName.at (i)

stringName.at (i) ligner stringName [i], men stringName.at (i) er mer pålitelig. Følgende kode viser hvordan den skal brukes:

streng strCol=streng('Jeg elsker deg');
røyekap=strCol.(4);
koste<<kap<< ' n';

at () er faktisk en strengklasse medlemsfunksjon.

stringName.at (i) konst

stringName.at (i) const ligner stringName [i] const, men stringName.at (i) const er mer pålitelig. stringName.at (i) const kjøres i stedet for stringName.at (i) når strengobjektet er et konstant strengobjekt. Den brukes i følgende kode, for eksempel:

konststreng strCol=streng('Jeg elsker deg');
røyekap=strCol.(4);
koste<<kap<< ' n';

at () const er faktisk en medlemsfunksjon i strengklassen.

Tilordne en verdi med funksjonen at ()

En verdi kan tilordnes et ikke-konstant strengobjekt, med funksjonen at (), som følger:

streng strCol=streng('Jeg ringer');
strCol.(2) = 'f';
koste<<strCol<< ' n';

Utgangen er jeg faller.

Problem med sub-scripting

Problemet med sub-scripting (indeksering) er at hvis indeksen er utenfor området, kan det oppstå feil resultat, eller det kan utstedes en feil ved kjøretid.

front()

Dette returnerer en referanse til det første elementet i strengobjektet, uten å fjerne elementet. Utdataene fra følgende kode er ‘I’.

streng strCol=streng('Jeg elsker deg');
røyekap=strCol.front();
koste<<kap<< ' n';

Tegnet fjernes ikke fra strengobjektet.

foran () konst

Når konstruksjonen av strengobjektet foregår av const, utføres uttrykket front () const i stedet for front (). Den brukes for eksempel i følgende kode.

konststreng strCol=streng('Jeg elsker deg');
røyekap=strCol.front();
koste<<kap<< ' n';

En konstant referanse returneres. Elementet fjernes ikke fra strengobjektet. Ingen tegn kan endres for et konstant strengobjekt.

tilbake()

Dette returnerer en referanse til det siste elementet i strengobjektet, uten å fjerne elementet. Utdataene fra følgende kode er ‘u’.

streng strCol=streng('Jeg elsker deg');
røyekap=strCol.tilbake();
koste<<kap<< ' n';

tilbake () konst

Når konstruksjonen av strengobjektet foregår av const, utføres uttrykket back () const i stedet for back (). Den brukes for eksempel i følgende kode.

konststreng strCol=streng('Jeg elsker deg');
røyekap=strCol.tilbake();
koste<<kap<< ' n';

En konstant referanse returneres. Elementet fjernes ikke fra strengobjektet.

Strengkapasitet

size_type kapasitet () const noexcept

Det totale antallet tegn strengen kan inneholde uten å kreve omdisponering, returneres av denne kapasitetsmedlemfunksjonen. Et kodesegment for dette er:

streng strCol=streng();
intpå en=strCol.kapasitet();
koste<<på en<< ' n';

Utgangen er 15 på datamaskinen min.

reserve (n)

Minneplass er ikke alltid tilgjengelig i gratis butikk. Ekstra plass kan reserveres på forhånd. Vurder følgende kodesegment:

streng strCol=streng('kjærlighet');
strCol.reservere(6);
koste<<strCol.kapasitet() << ' n';

Utgangen er 15 på datamaskinen min.

size () const noexcept

Dette returnerer antall tegn i strengen. Følgende kode illustrerer:

streng strCol=streng('Jeg elsker deg');
intpå en=strCol.størrelse();
koste<<på en<< ' n';

Utgangen er 10, som ikke inkluderer nul, 0 -tegnet.

length () const noexcept

-samme som størrelse().
Merk:størrelse() <=kapasitet().

krymp for å passe()

Kan redusere kapasiteten () til størrelse () ved å forårsake omdisponering; det er ikke obligatorisk. Følgende kode viser dette:

streng strCol=streng('Jeg elsker deg');
strCol.reservere(12);
strCol.krymp for å passe();
ints=strCol.størrelse();
koste<<s<< ' n';

Utgangen er 10 og ikke 12 eller 16. Funksjonen returnerer ugyldig.

endre størrelse (sz), endre størrelse (sz, 'c')

Dette endrer størrelsen på strengen. Hvis den nye størrelsen er mindre enn den gamle, blir elementene mot slutten slettet. Hvis den nye størrelsen er lengre, blir det lagt til et standardtegn mot slutten. For å få lagt til et bestemt tegn, bruk funksjonen resize () med to argumenter. Følgende kodesegment illustrerer bruken av de to funksjonene:

streng strCol=streng('Jeg elsker deg');
strCol.endre størrelse(6);
koste<< 'Ny størrelse på strCol:' <<strCol.størrelse() << ' n';
streng strCol1=streng('Jeg elsker', 'Og');
strCol1.endre størrelse(12);
koste<< 'Ny størrelse på strCol1:' <<strCol1.størrelse() << ' n';

Utgangen er:

Ny størrelse på strCol: 6
Ny størrelse på strCol1: 12
Funksjonen returnerer ugyldig.

klart () noe unntatt

Fjerner alle elementene fra strengen, slik følgende kodesegment illustrerer:

streng strCol=streng('Jeg elsker deg');
strCol.klar();
koste<<strCol.størrelse() << ' n';

Utgangen er 0. Funksjonen returnerer ugyldig.

tom () const noexcept

Dette returnerer 1 for true hvis det ikke er noe tegn i strengobjektet, eller 0 for usant hvis strengobjektet ikke er tomt. Følgende kode illustrerer dette:

streng strCol1=streng('Jeg elsker deg');
koste<<strCol1.tømme() << ' n';
streng strCol2=streng();
koste<<strCol2.tømme() << ' n';

Utgangen er:

0
1

Returnerende Iteratorer og strengklassen

En iterator er som en peker, men har mer funksjonalitet enn pekeren.

begin () noexcept

Returnerer en iterator som peker til det første tegnet (elementet) i strengobjektet, som i følgende kodesegment:

streng strCol=streng('Jeg elsker deg');
basic_string<røye> ::iteratoriter=strCol.begynne();
koste<< *iter<< ' n';

Utgangen er 'jeg'. Legg merke til måten erklæringen som mottar iteratoren er blitt erklært. Iteratoren blir referert i et returuttrykk for å oppnå verdien på samme måte som en peker blir referert.

begin () const noexcept;

Returnerer en iterator som peker til det første elementet i strengobjektsamlingen. Når objektkonstruksjonen går foran const, utføres uttrykket begin () const i stedet for begynner (). Under denne betingelsen kan det tilsvarende elementet i objektet ikke endres. Den brukes for eksempel i følgende kode.

konststreng strCol=streng('Jeg elsker deg');
basic_string<røye> ::const_iteratoriter=strCol.begynne();
koste<< *iter<< ' n';

Utgangen er 'jeg'. Vær oppmerksom på at const_iterator har blitt brukt denne gangen, i stedet for bare iterator, for å motta den returnerte iteratoren.

slutten () noe unntatt

Returnerer en iterator som peker umiddelbart utover det siste elementet i strengobjektet. Vurder følgende kodesegment:

streng strCol=streng('Jeg elsker deg');
basic_string<røye> ::iteratoriter=strCol.slutt();
koste<< *iter<< ' n';

Utgangen er null, noe som ikke er noe, siden det ikke er noe konkret element utover det siste elementet.

ende () const noexcept

Returnerer en iterator som peker umiddelbart utover det siste elementet i strengobjektet. Når strengobjektkonstruksjonen går foran const, utføres uttrykket end () const i stedet for end (). Vurder følgende kodesegment:

konststreng strCol=streng('Jeg elsker deg');
basic_string<røye> ::const_iteratoriter=strCol.slutt();
koste<< *iter<< ' n';

Utgangen er null. Vær oppmerksom på at const_iterator har blitt brukt denne gangen, i stedet for bare iterator, for å motta den returnerte iteratoren.

Omvendt iterasjon

Det er mulig å ha en iterator som gjentar seg fra den faktiske enden til like før det første elementet:

rbegin () noe unntatt

Returnerer en iterator som peker til det siste elementet i strenginstansiert objekt, som i følgende kodesegment:

streng strCol=streng('Jeg elsker deg');
basic_string<røye> ::reverse_iteratoriter=strCol.begynte på nytt();
koste<< *iter<< ' n';

Utgangen er 'u'. Legg merke til måten erklæringen som mottar omvendt iterator, har blitt erklært. Iteratoren blir referert i et returuttrykk for å oppnå verdien på samme måte som en peker blir referert.

rbegin () const noexcept;

Returnerer en iterator som peker til det siste elementet i strengobjektet. Når objektkonstruksjonen går foran const, utføres uttrykket rbegin () const i stedet for rbegin (). Under denne betingelsen kan det tilsvarende elementet i objektet ikke endres. Funksjonen brukes for eksempel i følgende kode.

konststreng strCol=streng('Jeg elsker deg');
basic_string<røye> ::const_reverse_iteratoriter=strCol.begynte på nytt();
koste<< *iter<< ' n';

Utgangen er 'u'. Vær oppmerksom på at const_reverse_iterator har blitt brukt denne gangen, i stedet for bare reverse_iterator, for å motta den returnerte iteratoren.

gjengi () noe unntatt

Returnerer en iterator som peker like før det første elementet i strengobjektet. Vurder følgende kodesegment:

streng strCol=streng('Jeg elsker deg');
basic_string<røye> ::reverse_iteratoriter=strCol.gjør at();
koste<< *iter<< ' n';

Utgangen er null, noe som ikke er noe, ettersom det ikke er noe betongelement like før det første elementet.

gjengi () const noexcept

Returnerer en iterator som peker like før det første elementet i strengobjektet. Når objektkonstruksjonen går foran const, utføres uttrykket rend () const i stedet for rend (). Vurder følgende kodesegment:

konststreng strCol=streng('Jeg elsker deg');
basic_string<røye> ::const_reverse_iteratoriter=strCol.gjør at();
koste<< *iter<< ' n';

Utgangen er null. Vær oppmerksom på at const_reverse_iterator har blitt brukt denne gangen, i stedet for bare reverse_iterator, for å motta den returnerte iteratoren.

Strengmodifikatorer

En modifikator som endrer strengobjektet, kan også ta eller returnere en iterator.

Legger til

basic_string&operatør+ =(konstbasic_string&s)

Legger til det høyre strengobjektet til det venstre strengobjektet. Eksempel:

streng strCol1=streng('Jeg elsker');
streng strCol2=streng('du');
strCol1+ =strCol2;
koste<<strCol1<< ' n';

Utgangen er jeg elsker deg. Ikke glem at strCol1 += strCol2 er det samme som strCol1 = strCol1 +strCol2.

basic_string & operator+= (const charT* s)

Tilføyer en streng bokstavelig til en samling av strengobjekter. Eksempel:

streng strCol=streng('Jeg elsker');
strCol+ = 'du';
koste<<strCol<< ' n';

Utgang: Jeg elsker deg.

basic_string & operator+= (tegn c)

Legger til et enkelt tegn i en objektstreng. Eksempel:

streng strCol=streng('Jeg elsker deg');
strCol+ = 'du';
koste<<strCol<< ' n';

Utgang: Jeg elsker deg.

basic_string & operator+= (initializer_list)

Legger til en initialiseringsliste. Eksempel:

streng strCol=streng('Jeg elsker');
strCol+ = {'','og','eller','du',' 0'};
koste<<strCol<< ' n';

Utgang: Jeg elsker deg. Det er alltid godt å legge til nul, 0 på slutten av en tegninitialiseringsliste.

basic_string & append (const basic_string & str)

Legger til argumentstrengobjektet til hovedstrengobjektet. Eksempel:

streng strCol1=streng('Jeg elsker');
streng strCol2=streng('du');
strCol1.legge til(strCol2);
koste<<strCol1<< ' n';

Utgang: Jeg elsker deg.

basic_string & append (const charT* s)

Legger til et strengt bokstavelig argument til hovedstrengen. Eksempel

streng strCol=streng('Jeg elsker');
strCol=strCol.legge til('du');
koste<<strCol<< ' n';

Utgang: Jeg elsker deg.

basic_string & append (initializer_list)

Legger til initialiseringslisten, som er et argument, til hovedstrengen. Eksempel:

streng strCol=streng('Jeg elsker');
strCol=strCol.legge til({'','og','eller','du',' 0'});
koste<<strCol<< ' n';

Utgang: Jeg elsker deg. Det er alltid godt å legge til nul, 0 -tegnet på slutten av en initialiseringsliste.

basic_string & append (size_type n, charT c)

Legger til n av samme karakter. Eksempel:

streng strCol=streng('fane');
strCol=strCol.legge til(2, 'eller');
koste<<strCol<< ' n';

Utgang: tabu.

basic_string & append (const charT* s, size_type n)

Legger til de første n elementene i en streng bokstavelig til hovedstrengobjektet. Eksempel:

streng strCol=streng('Jeg elsker');
strCol=strCol.legge til(' du så', 4);
koste<<strCol<< ' n';

Utgangen er: Jeg elsker deg. Hvis n er større enn lengden på bokstavene, kastes et lengde_feil unntak.

basic_string & append (const basic_string & str, size_type pos, size_type n = npos)

Legger til n tegn fra indeksen, pos til hovedstrengen. Eksempel:

streng strCol=streng('Jeg elsker');
strCol=strCol.legge til(har du det, 2, 4);
koste<<strCol<< ' n';

Utgang: Jeg elsker deg. Et unntak vil også bli kastet her, se senere.

Tildeler

basic_string&tildele(konstbasic_string&s)

Tilordner argumentstrengobjektet til hovedstrengen, og erstatter alt innhold som var der.

streng strCol1=streng('Jeg elsker deg');
streng strCol2=streng('Hun trenger meg');
strCol1=strCol1.tildele(strCol2);
koste<<strCol1<< ' n';

Utgang: Hun trenger meg.

basic_string&tildele(konstcharT*s)

Tilordner et strengt bokstavelig argument til hovedstrengen, og erstatter alt innhold som var der.

streng strCol=streng('Jeg elsker deg');
strCol=strCol.tildele('Hun trenger meg');
koste<<strCol<< ' n';

Utgang: Hun trenger meg.

basic_string&tildele(initializer_list<charT>)

Tilordner et initialiseringsliste -argument til hovedstrengen,erstatte alt innhold som var der.
[cc lang='c'slapp unna='ekte'bredde='780']
streng strCol=streng('Jeg elsker deg');
strCol=strCol.tildele({'S','h','Og','','n','Og','Og','d',er ','','m','Og',' 0'});
koste<<strCol<< ' n';

Utgang: Hun trenger meg. Det er bra å alltid legge til nul, 0 på slutten av tegnlisten, for å danne en streng bokstavelig.

basic_string&tildele(konstcharT*s,størrelse_type n)

Tilordner hovedstrengen de første n tegnene i et bokstavelig strengargument, og erstatter alt innhold som var der.

streng strCol=streng('Jeg elsker deg');
strCol=strCol.tildele('Hun trenger meg', 9);
koste<<strCol<< ' n';

Utgang: Hun trenger.

basic_string&tildele(størrelse_type n,charT c)

Tilordner et argument med n av de samme tegnene til hovedstrengen, og erstatter alt innhold som var der.

streng strCol=streng('Jeg elsker deg');
strCol=strCol.tildele(4, 'Og');
koste<<strCol<< ' n';

Utgang: eeee

basic_string&tildele(konstbasic_string&s,størrelse_type pos,
størrelse_type n=npos)

Tilordner n tegn i et strengobjektargument, som begynner fra pos, til hovedstrengen, og erstatter alt innhold som var der.

streng strCol=streng('Jeg elsker deg');
strCol=strCol.tildele('Hun trenger meg', 4, 5);
koste<<strCol<< ' n';

Utgang: behov. Ville kaste et unntak - se senere.

Innsetting

basic_string&sett inn(størrelse_type pos, konstbasic_string&s)

Setter inn strengobjektargumentet i hovedstrengen, ved indeks, pos.

streng strCol1=streng('Jeg elsker deg');
streng strCol2=streng('hat og');
strCol1=strCol1.sett inn(2,strCol2);
koste<<strCol1<< ' n';

Utgang: Jeg hater og elsker deg. Ville kaste et unntak - se senere.

basic_string&sett inn(størrelse_type pos1, konstbasic_string&
s,størrelse_type pos2,størrelse_type n=npos)

Setter inn en lengde på n tegn fra pos2 i strengobjektargumentet, til hovedstrengen, ved indeks, pos1.

streng strCol1=streng('Jeg elsker deg');
streng strCol2=streng('hate, ønsker og trenger');
strCol1=strCol1.sett inn(2,strCol2, 6, 9);
koste<<strCol1<< ' n';

Utgang: Jeg vil og elsker deg.

iteratorinnsats (const_iterator p, charT c)

Setter inn et bestemt tegn, som er et argument, i posisjonen som iteratoren peker på. Returnerer en iterator for plasseringen av det nylig innsatte tegnet.

streng strCol=streng('Jeg elsker deg');
basic_string<røye> ::iteratoriter=strCol.begynne();
++iter; ++iter; ++iter; ++iter; ++iter; ++iter;
basic_string<røye> ::iteratorNettverk=strCol.sett inn(iter, 'd');
koste<< *Nettverk<< ' n';
koste<<strCol<< ' n';

Utgangen er:

'D'

jeg elsket deg

iteratorinnsats (const_iterator p, size_type n, charT c)

Setter inn n av samme karakter i argumentet, i posisjonen, som iteratoren peker på. Returnerer en iterator for plasseringen av begynnelsen på de nylig innsatte samme tegnene.

streng strCol=streng('Tab i landet.');
basic_string<røye> ::iteratoriter=strCol.begynne();
++iter; ++iter; ++iter;
basic_string<røye> ::iteratorNettverk=strCol.sett inn(iter, 2, 'eller');
koste<< *Nettverk<< ' n';
koste<<strCol<< ' n';

Utgangen er:

'eller'

Tabu i landet.

basic_string&sett inn(størrelse_type pos, konstcharT*s)

Setter inn en argumentstreng bokstavelig på indeksen, pos i hovedstrengen.

streng strCol=streng('Tab i landet.');
strCol=strCol.sett inn(3, 'oo');
koste<<strCol<< ' n';

Utgang: Tabu i landet.

basic_string&sett inn(størrelse_type pos, konstcharT*s,størrelse_type n)

Setter inn de første n tegnene i argumentstrengen bokstavelig, i indeksen, pos i hovedstrengen.

streng strCol=streng('Tab i landet.');
strCol=strCol.sett inn(3, 'oooo', 2);
koste<<strCol<< ' n';

Utgang: Tabu i landet.

Erstatte

basic_string&erstatte(størrelse_type pos1,størrelse_type n1, konstbasic_string&s))

Erstatter n1 -tegn i hovedstrengobjektet fra indeks, pos1, med argumentstrengobjektet.

streng strCol1=streng('Jeg elsker deg');
streng strCol2=streng('hater deg og');
strCol1=strCol1.erstatte(2, 4,strCol2);
koste<<strCol1<< ' n';

Utgang: Jeg hater deg og deg. Ville kaste et unntak - se senere.

basic_string&erstatte(størrelse_type pos1,størrelse_type n1, konstbasic_string&
s,størrelse_type pos2,størrelse_type n2=npos)

Erstatter n1 -tegn i hovedstrengobjektet fra indeksen, pos1, med n2 -tegn i argumentstrengobjektet fra indeksen, pos2.

streng strCol1=streng('Jeg elsker deg');
streng strCol2=streng('vi hater ham og henne');
strCol1=strCol1.erstatte(2, 4,strCol2, 3, 12);
koste<<strCol1<< ' n';

Utgang: Jeg hater ham og deg.

basic_string&erstatte(størrelse_type pos1,størrelse_type n1, konstcharT*s,
størrelse_type n2)

Erstatter n1 -tegn i hovedstrengobjektet fra indeksen, pos1, med de første n2 -tegnene i det bokstavelige strengargumentet.

streng strCol1=streng('Jeg elsker deg');
strCol1=strCol1.erstatte(2, 4, 'hater ham og henne', 12);
koste<<strCol1<< ' n';

Utgang: Jeg hater ham og deg.

basic_string & erstat (size_type pos, size_type n, const charT* s)

Erstatter n tegn i hovedstrengobjektet fra indeks, pos, med det bokstavelige strengargumentet.

streng strCol1=streng('Jeg elsker deg');
strCol1=strCol1.erstatte(2, 4, 'hater ham og');
koste<<strCol1<< ' n';

Utgang: Jeg hater ham og deg.

basic_string&erstatte(størrelse_type pos1,størrelse_type n1,størrelse_type n2,charT c)

Erstatter n1 -tegn i hovedstrengobjektet fra indeksen, pos1, med n2 med samme tegn i argumentet.

streng strCol1=streng('En dårlig nettbrett der.');
strCol1=strCol1.erstatte(9, 3, 2, 'eller');
koste<<strCol1<< ' n';

Utgang: Et dårlig tabu der ..

iterator -sletting (const_iterator p)

Fjerner et tegn på posisjonen som iteratoren peker på; returnerer deretter iteratorposisjonen, som nå er okkupert av tegnet som var ved siden av dette tegnet (eller slutten ()). Følgende kode illustrerer dette:

streng strCol=streng('abcd');
basic_string<røye> ::iteratoriter=strCol.begynne();
++iter; ++iter;
strCol.viske ut(iter);
koste<<strCol[0] << '' <<strCol[1] << '
'
<<strCol[2]<< ' n';

Utgangen: a b d

basic_string&viske ut(størrelse_type pos= 0,størrelse_type n=npos)

Fjerner n tegn fra indeksen, pos.

streng strCol=streng('abcd');
strCol.viske ut(1, 2);
koste<<strCol[0] << '' <<strCol[1] << ' n';

Utgang: a d

ugyldig push_back (tegn c)

Slik legger du til et enkelt tegn på slutten av strengen:

streng strCol=streng('abcd');
strCol.push_back('5');
koste<<strCol<< ' n';

Utgang: abcd5

ugyldig pop_back ()

Fjerner det siste tegnet uten å returnere det. Størrelsen på strengen reduseres med 1.

streng strCol=streng('abcde');
strCol.pop_back();
koste<<strCol<< ' n';

Utgang: abcd

void swap (basic_string & s)

Bokstavene til to strengobjekter kan byttes.

streng strCol1=streng(<et ID='post-69618 -__ DdeLink__781_3724385525'>til>'abcde');
streng strCol2=streng('1234567');
strCol1.bytte(strCol2);
koste<<strCol1<< ' n';
koste<<strCol2<< ' n';

Utgangen er:

'1234567'
'abcde'

Strengoperasjoner

const charT* c_str () const noexcept

Returnerer en peker til det første elementet i strengen. Pekeren kan økes.

konststreng strCol=streng('abcde');
konst røye*s=strCol.c_str();
koste<< *s<< ' n';
++s;
koste<< *s<< ' n';

Utdata er:

til
b

På grunn av den andre const i overskriften, kan programmet ikke endre noen tegn i strengen. Konstruksjonen foregår av konst.

const charT* data () const noexcept

Returnerer en peker til det første elementet i strengen. Pekeren kan økes.

konststreng strCol=streng('abcde');
konst røye*s=strCol.data();
koste<< *s<< ' n';
++s;
koste<< *s<< ' n';

Utdata er:

til
b

På grunn av den andre const i overskriften, kan programmet ikke endre noen tegn i strengen. Konstruksjonen foregår av konst.

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

Returnerer et strengobjekt med n tegn for delstrengen som begynner fra indeksen, pos.

konststreng strCol=streng('abcdefghij');
konststreng retStr=strCol.substr(2, 4);
koste<<retStr<< ' n';

Utgang: cdef

finn () medlemsfunksjoner

size_type find (const basic_string & str, size_type pos = 0) const noexcept

Ser etter et substrengobjekt som begynner fra indeksen, pos. Hvis funnet, returnerer begynnelsen på delstrengen i hovedstrengen.

streng strCol=streng('Vi er verden!');
streng strCol1=streng('de');
intpå en=strCol.finne(strCol1, 2);
koste<<på en<< ' n';

Produksjon:

indeks: 7
Returnerer -1, når den ikke blir funnet.

size_type find (const charT* s, size_type pos = 0) const

Ser etter en sub-streng bokstavelig begynnelse fra indeksen, pos. Hvis funnet, returnerer begynnelsen på delstrengen i hovedstrengen.

streng strCol=streng('Vi er verden!');
intpå en=strCol.finne('er', 0);
koste<<på en<< ' n';

Siden pos = 0 er standard, kunne 0 i argumentet ha blitt utelatt.

Utgang: 3

Returnerer -1, når den ikke blir funnet.

size_type find (const charT* s, size_type pos, size_type n) const

Ser etter de første n tegnene i en understreng bokstavelig talt fra indeksen, pos. Hvis funnet, returnerer begynnelsen på delstrengen i hovedstrengen.

streng strCol=streng('Den største gutten');
intpå en=strCol.finne('større', 1, 3);
koste<<på en<< ' n';

Utgang: 4

Returnerer -1, når den ikke blir funnet.

size_type find (charT c, size_type pos = 0) const

Ser etter tegnet, c fra indeksen, pos. Hvis funnet, returnerer begynnelsen på delstrengen i hovedstrengen. Hvis den ikke blir funnet, returneres -1.

streng strCol=streng('Vi er verden!');
intpå en=strCol.finne('Med');
koste<<på en<< ' n';

Utgang: -1

Følgende reverse find () medlemsfunksjoner eksisterer:

size_type rfind(konstbasic_string&s,størrelse_type pos=npos) konstnoe unntatt;
size_type rfind(konstcharT*s,størrelse_type pos=npos) konst;
size_type rfind(konstcharT*s,størrelse_type pos,størrelse_type n) konst;
size_type rfind(charT c,størrelse_type pos=npos) konst;

Sammenligning av medlemsfunksjoner

int sammenligne (const basic_string & str) const noexcept

Sammenligner argumentstrengobjektet med hovedstrengobjektet. Hvis hovedstrengen oppstår før argumentet (i ordlisten) returnerer det et positivt tall. Hvis det oppstår etter hovedstrengen, returnerer det et negativt tall. Hvis de to strengene er like, returnerer den null.

streng strCol1=streng('publikum');
streng strCol2=streng('mennesker');
intpå en=strCol1.sammenligne(strCol2);
koste<<på en<< ' n';

Utgang: -13

int sammenligne (const charT* s) const

Samme som ovenfor, men argumentet er en streng bokstavelig.

streng strCol1=streng('mennesker');
intpå en=strCol1.sammenligne('mennesker');
koste<<på en<< ' n';

Utgang: 0

Strykeoperatører

Disse operatørene gjelder for strengobjekter og ikke nødvendigvis strengbokstaver.

+

Sammenkoble to strengobjekter, og returnerer sammenkoblingen.

streng strCol1=streng('danser på');
streng strCol2=streng(' månen');
streng strCol=strCol1+strCol2;
koste<<strCol<< ' n';

Utgang: dans på månen.

==

Returnerer 1 for true, hvis strengobjektene er de samme; og null for falsk, hvis de ikke er det.

streng strCol1=streng('danser på');
streng strCol2=streng(' på månen');
bool bl=strCol1==strCol2;
koste<<bl<< ' n';

Utgang: 0

! =

Returnerer 1 hvis strengobjektene ikke er de samme, og null hvis de er.

streng strCol1=streng('danser på');
streng strCol2=streng(' på månen');
bool bl=strCol1! =strCol2;
koste<<bl<< ' n';

Utgang: 1

<

Returnerer 1, hvis venstre operand er mindre enn høyre operand i henhold til ordlisten, eller null hvis den ikke er det.

streng strCol1=streng('danser på');
streng strCol2=streng(' på månen');
bool bl=strCol1<strCol2;
koste<<bl<< ' n';

Utgang: 0

For vanlige tegn i C ++, i stigende rekkefølge, kommer tall før store bokstaver, som kommer før små bokstaver. Romtegnet kommer foran null og alle sammen.

C ++ Typer typer hovedstreng

røye

Røyetypen er den originale C ++ - typen og vil vanligvis lagre et tegn i 8 bits.

char16_t

Dette lagrer et tegn i 16 biter.

char32_t

Dette lagrer et tegn i 32 bits.

wchar_t

char16_t og char32_t er brede tegn. wchar_t er et bredt tegn som er proprietær og implementeringsdefinert.

Disse typene kalles trekk. Imidlertid omtaler C ++ dem teknisk sett som spesialiseringer av egenskaper. Denne artikkelen har fokusert på typen røye. Tilnærmingen til de andre typene er litt annerledes - se senere.

Andre strengoperasjonsmedlemmer

Signaturene til andre strengoperasjonsfunksjoner er:

size_type finn_first_of(konstbasic_string&s,størrelse_type pos= 0) konstnoe unntatt;
size_type finn_first_of(konstcharT*s,størrelse_type pos,størrelse_type n) konst;
size_type finn_first_of(konstcharT*s,størrelse_type pos= 0) konst;
size_type finn_first_of(charT c,størrelse_type pos= 0) konst;
size_type finn_last_of(konstbasic_string&s,størrelse_type pos=npos) konstnoe unntatt;
size_type finn_last_of(konstcharT*s,størrelse_type pos,størrelse_type n) konst;
size_type finn_last_of(konstcharT*s,størrelse_type pos=npos) konst;
size_type finn_last_of(charT c,størrelse_type pos=npos) konst;
størrelse_type finn_først_ikke_av(konstbasic_string&s,størrelse_type pos= 0) konstnoe unntatt;
størrelse_type finn_først_ikke_av(konstcharT*s,størrelse_type pos,størrelse_type n) konst;
størrelse_type finn_først_ikke_av(konstcharT*s,størrelse_type pos= 0) konst;
størrelse_type finn_først_ikke_av(charT c,størrelse_type pos= 0) konst;
size_type finn_last_not_of(konstbasic_string&s,størrelse_type pos=npos) konstnoe unntatt;
size_type finn_last_not_of(konstcharT*s,størrelse_type pos,størrelse_type n) konst;
size_type finn_last_not_of(konstcharT*s,størrelse_type pos=npos) konst;
size_type finn_last_not_of(charT c,størrelse_type pos=npos) konst;

Konklusjon

C ++ har strenglitteraler og strengobjekter. Strengobjektet har en samling tegn i rekkefølge, lik en rekke tegn i rekkefølge. Forskjellen mellom strengsamlingen og en matrise er at strengsamlingen kan vokse i lengde eller krympe i lengde. Et strengobjekt blir instantiert (konstruert) fra en strengklasse. Et strengobjekt er en datastruktur med medlemsfunksjoner. Medlemsfunksjonene kan klassifiseres under overskriftene objektkonstruksjon, elementtilgang, strengkapasitet, strengmedlemfunksjoner med iteratorargumenter og returtyper og strengmodifikatorer. Strenglikhet og relasjonsoperatører eksisterer også.