Sådan bruges C ++ strengklasse

How Use C String Class



En streng bogstavelig er en sekvens af tegn i en konstant matrixmarkør, der afsluttes af nultegnet, 0. Når den identificeres med en variabel, kan strengen bogstaveligt talt ikke virkelig reducere eller øge længden. Mange operationer kan ikke udføres på strengen bogstaveligt. Så der er brug for en strengklasse. C ++ strengklassen er til en datastruktur, en samling af tegn i rækkefølge, som gør det muligt for medlemsfunktioner og operatører at handle på tegnene. Strenge klassen tillader flere manipulationer på den tilsvarende streng bogstavelig, end bare strengen bogstavelig. Du skal have et godt kendskab til streng bogstavelig talt for at forstå denne artikel.

Klasse og genstande

En klasse er et sæt variabler og funktioner, der fungerer sammen; hvor variablerne ikke har værdier tildelt. Når værdierne tildeles variablerne, bliver klassen et objekt. Forskellige værdier givet til den samme klasse resulterer i forskellige objekter; det vil sige, at forskellige objekter er den samme klasse med forskellige værdier. At oprette et objekt fra en klasse siges at være instantiating objektet.







Navnet, streng, er en klasse. Et objekt, der er oprettet fra strengklassen, har et programmeret navn.



En funktion, der tilhører klassen, er nødvendig for at instantiere et objekt fra klassen. I C ++ har denne funktion det samme navn som navnet på klassen. Objekter, der er oprettet (instantieret) fra klassen, har givet forskellige navne af programmereren.



At skabe et objekt fra en klasse betyder at konstruere objektet; det betyder også instantiating.





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

#omfatte
#omfatte
ved hjælp af navneområde std;

Den første linje er for input/output. Den anden linje er at tillade programmet at bruge alle funktionerne i strengklassen. Den tredje linje gør det muligt for programmet at bruge navnene i standardnavneområdet.



Overbelastning af en funktion

Når to eller flere forskellige funktionssignaturer har samme navn, siges det navn at være overbelastet. Når en funktion kaldes, bestemmer antallet og typen af ​​argumenter, hvilken funktion der udføres.

Konstruktion

snor()
Den følgende sætning konstruerer en streng med nul længde uden tegn.

streng strCol=snor();

Det begynder med navnet på klassen (objekttype), string. Dette efterfølges af navnet på objektstrengen, givet af programmøren. Tildelingsoperatøren følger; derefter navnet på konstruktøren med tomme parenteser. Her er strCol det instantierede objekt med alle datamedlemmer (egenskaber) og medlemsfunktioner (metoder).
streng (str)
Dette ligner ovenstående, men tager enten en streng bogstavelig eller en identifikator som et argument i konstruktøren. Følgende erklæring illustrerer dette:

streng strCol=snor('Jeg elsker dig');

Konstruktion med initialiseringsliste

Følgende kode illustrerer dette:

streng strCol=snor({'JEG','','det','eller','v','Og','','og','eller','dig',' 0'});

Strengen bogstaveligt talt er jeg elsker dig. Bemærk nul -tegnet i slutningen af ​​initialiseringslisten.

streng (str, n)

Dette danner en strengsamling af de første n tegn i en anden streng. Følgende kode illustrerer dette:

forkælelses[] = 'Jeg elsker dig';
streng strCol=snor(s, 6);
koste<<strCol<< ' n';

Outputtet er I love med de første 6 karakterer fra I love you. Husk: det enkelte rum er en karakter.

streng (str, pos, n)

Dette danner en strengsamling af n tegn, der starter fra den nulbaserede indekserede position, pos, for en anden streng. Følgende kode illustrerer dette:

forkælelses[] = 'Jeg elsker dig';
streng strCol=snor(s, 2, 4);
koste<<strCol<< ' n';

Output er, kærlighed.

For de ovennævnte to tilfælde, hvis n er større end strengens størrelse, kastes undtagelsen_for_range undtagelse - se senere.

streng (n, 'c')

Danner en samling af n tegn, hvor alle tegnene er ens. Overveje,

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

Outputtet er, eeeee, 5 e’er.

Tildeling af en streng

En streng kan tildeles som følger efter at have erklæret begge strenge:

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

Output er, jeg elsker dig.

Konstruerer med Iterator

En iterator giver en generisk repræsentation af scanning gennem værdierne i en samling. En syntaks til at oprette en streng med iterator er:

skabelon<klasse InputIterator>
basic_string(InputIterator begynder,InputIterator -ende, konstAllokator&
til=Allokator());

Dette konstruerer en streng til området [begynd, slut) - se detaljer senere.

Ødelægge en streng

For at ødelægge en streng skal du bare lade den gå ud af anvendelsesområdet.

Adgang til strengklasseelement

Et instantieret strengobjekt kan være sub-scriptet (indekseret) som et array. Indekstælling begynder fra nul.

stringName [i]

Operation stringName [i] returnerer en reference til tegnet (element) ved ithindeks over tegnsamlingen. Følgende kodeudgange v:

streng strCol=snor('Jeg elsker dig');
forkælelsekap=strCol[4];
koste<<kap<< ' n';

stringName [i] konst

Operationen stringName [i] const udføres i stedet for stringName [i], når strengobjektet er et konstant objekt. Det bruges f.eks. I følgende kode:

konststreng strCol=snor('Jeg elsker dig');
forkælelsekap=strCol[4];
koste<<kap<< ' n';

Udtrykket returnerer en konstant reference til ithelement i strengobjektet. Ingen af ​​elementerne i strengen kan ændres.

Tildeling af en karakter med abonnement

Et tegn kan tildeles et ikke-konstant strengobjekt som følger:

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

Outputtet er jeg falder. 'C' blev ændret til 'f'.

stringName.at (i)

stringName.at (i) ligner stringName [i], men stringName.at (i) er mere pålidelig. Følgende kode viser, hvordan den skal bruges:

streng strCol=snor('Jeg elsker dig');
forkælelsekap=strCol.(4);
koste<<kap<< ' n';

at () er faktisk en strengklassemedlemsfunktion.

stringName.at (i) konst

stringName.at (i) const ligner stringName [i] const, men stringName.at (i) const er mere pålidelig. stringName.at (i) const udføres i stedet for stringName.at (i) når strengobjektet er et konstant strengobjekt. Det bruges i følgende kode, for eksempel:

konststreng strCol=snor('Jeg elsker dig');
forkælelsekap=strCol.(4);
koste<<kap<< ' n';

at () const er faktisk en strengklasse medlemsfunktion.

Tildeling af en værdi med funktionen at ()

En værdi kan tildeles et ikke-konstant strengobjekt med funktionen at () som følger:

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

Outputtet er jeg falder.

Problem med sub-scripting

Problemet med sub-scripting (indeksering) er, at hvis indekset er uden for rækkevidde, kan det forkerte resultat opnås, eller der kan blive udsendt en fejl ved løbetid.

foran()

Dette returnerer en reference til det første element i strengobjektet uden at fjerne elementet. Outputtet af den følgende kode er 'I'.

streng strCol=snor('Jeg elsker dig');
forkælelsekap=strCol.foran();
koste<<kap<< ' n';

Tegnet fjernes ikke fra strengobjektet.

foran () konst

Når strengobjektkonstruktionen går forud for const, udføres udtrykket front () const i stedet for front (). Det bruges f.eks. I følgende kode.

konststreng strCol=snor('Jeg elsker dig');
forkælelsekap=strCol.foran();
koste<<kap<< ' n';

En konstant reference returneres. Elementet fjernes ikke fra strengobjektet. Intet tegn kan ændres for et konstant strengobjekt.

tilbage()

Dette returnerer en reference til det sidste element i strengobjektet uden at fjerne elementet. Outputtet af følgende kode er 'u'.

streng strCol=snor('Jeg elsker dig');
forkælelsekap=strCol.tilbage();
koste<<kap<< ' n';

tilbage () konst

Når strengobjektkonstruktionen går forud for const, udføres udtrykket back () const i stedet for back (). Det bruges f.eks. I følgende kode.

konststreng strCol=snor('Jeg elsker dig');
forkælelsekap=strCol.tilbage();
koste<<kap<< ' n';

En konstant reference returneres. Elementet fjernes ikke fra strengobjektet.

Strengkapacitet

størrelse_type kapacitet () const noexcept

Det samlede antal tegn, som strengen kan indeholde uden at kræve omfordeling, returneres af denne kapacitetsmedlemfunktion. Et kodesegment til dette er:

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

Output er 15 på min computer.

reserve (n)

Hukommelsesplads er ikke altid tilgængelig i gratis butik. Ekstra plads kan reserveres på forhånd. Overvej følgende kodesegment:

streng strCol=snor('kærlighed');
strCol.reservere(6);
koste<<strCol.kapacitet() << ' n';

Output er 15 på min computer.

størrelse () const noexcept

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

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

Outputtet er 10, hvilket ikke inkluderer nul, 0 -tegnet.

længde () const noexcept

-samme som størrelse().
Bemærk:størrelse() <=kapacitet().

shrink_to_fit ()

Kan reducere kapaciteten () til størrelse () ved at forårsage omlokering; det er ikke obligatorisk. Følgende kode viser dette:

streng strCol=snor('Jeg elsker dig');
strCol.reservere(12);
strCol.shrink_to_fit();
ints=strCol.størrelse();
koste<<s<< ' n';

Outputtet er 10 og ikke 12 eller 16. Funktionen returnerer ugyldig.

ændre størrelse (sz), ændre størrelse (sz, 'c')

Dette ændrer størrelsen på strengen. Hvis den nye størrelse er mindre end den gamle, slettes elementerne mod slutningen. Hvis den nye størrelse er længere, tilføjes nogle standardtegn mod slutningen. Hvis du vil have tilføjet et bestemt tegn, skal du bruge funktionen resize () med to argumenter. Følgende kodesegment illustrerer brugen af ​​de to funktioner:

streng strCol=snor('Jeg elsker dig');
strCol.ændre størrelse(6);
koste<< 'Ny strCol -størrelse:' <<strCol.størrelse() << ' n';
streng strCol1=snor('Jeg elsker', 'Og');
strCol1.ændre størrelse(12);
koste<< 'Ny strCol1 -størrelse:' <<strCol1.størrelse() << ' n';

Outputtet er:

Ny størrelse af strCol: 6
Ny størrelse af strCol1: 12
Funktionen returnerer ugyldig.

klart () noget undtagen

Fjerner alle elementer fra strengen, som følgende kodesegment illustrerer:

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

Outputtet er 0. Funktionen returnerer ugyldig.

tom () const noexcept

Dette returnerer 1 for sand, hvis der ikke er noget tegn i strengobjektet, eller 0 for falsk, hvis strengobjektet ikke er tomt. Følgende kode illustrerer dette:

streng strCol1=snor('Jeg elsker dig');
koste<<strCol1.tom() << ' n';
streng strCol2=snor();
koste<<strCol2.tom() << ' n';

Outputtet er:

0
1

Tilbagevendende Iteratorer og strengklassen

En iterator er som en markør, men har mere funktionalitet end markøren.

begynde () noexcept

Returnerer en iterator, der peger på det første tegn (element) i strengobjektet, som i følgende kodesegment:

streng strCol=snor('Jeg elsker dig');
basic_string<forkælelse> ::iteratoriter=strCol.begynde();
koste<< *iter<< ' n';

Outputtet er 'jeg'. Bemærk den måde, hvorpå erklæringen, der modtager iteratoren, er blevet erklæret. Iteratoren bliver afledt i et returudtryk for at opnå værdien på samme måde, som en markør erfereret.

begin () const noexcept;

Returnerer en iterator, der peger på det første element i samling af strengobjekter. Når objektkonstruktionen går forud for const, udføres udtrykket begin () const i stedet for begin (). Under denne betingelse kan det tilsvarende element i objektet ikke ændres. Det bruges f.eks. I følgende kode.

konststreng strCol=snor('Jeg elsker dig');
basic_string<forkælelse> ::const_iteratoriter=strCol.begynde();
koste<< *iter<< ' n';

Outputtet er 'jeg'. Bemærk, at const_iterator denne gang er blevet brugt i stedet for kun iterator til at modtage den returnerede iterator.

ende () noget undtagen

Returnerer en iterator, der peger umiddelbart ud over det sidste element i strengobjektet. Overvej følgende kodesegment:

streng strCol=snor('Jeg elsker dig');
basic_string<forkælelse> ::iteratoriter=strCol.ende();
koste<< *iter<< ' n';

Outputtet er nul, hvilket ikke er noget, da der ikke er noget konkret element ud over det sidste element.

ende () const noexcept

Returnerer en iterator, der peger umiddelbart ud over det sidste element i strengobjektet. Når strengobjektkonstruktionen går forud for const, udføres udtrykket end () const i stedet for end (). Overvej følgende kodesegment:

konststreng strCol=snor('Jeg elsker dig');
basic_string<forkælelse> ::const_iteratoriter=strCol.ende();
koste<< *iter<< ' n';

Outputtet er nul. Bemærk, at const_iterator denne gang er blevet brugt i stedet for kun iterator til at modtage den returnerede iterator.

Omvendt Iteration

Det er muligt at have en iterator, der gentager sig fra den faktiske ende til lige før det første element:

rbegin () noget undtagen

Returnerer en iterator, der peger på det sidste element i det strenginstituerede objekt, som i følgende kodesegment:

streng strCol=snor('Jeg elsker dig');
basic_string<forkælelse> ::reverse_iteratoriter=strCol.begyndte igen();
koste<< *iter<< ' n';

Outputtet er 'u'. Bemærk den måde, hvorpå erklæringen, der modtager den omvendte iterator, er blevet erklæret. Iteratoren bliver afledt i et returudtryk for at opnå værdien på samme måde, som en markør erfereret.

rbegin () const noexcept;

Returnerer en iterator, der peger på det sidste element i strengobjektet. Når objektkonstruktionen går forud for const, udføres udtrykket rbegin () const i stedet for rbegin (). Under denne betingelse kan det tilsvarende element i objektet ikke ændres. Funktionen bruges f.eks. I følgende kode.

konststreng strCol=snor('Jeg elsker dig');
basic_string<forkælelse> ::const_reverse_iteratoriter=strCol.begyndte igen();
koste<< *iter<< ' n';

Outputtet er 'u'. Bemærk, at const_reverse_iterator denne gang er blevet brugt i stedet for bare reverse_iterator til at modtage den returnerede iterator.

render () noget undtagen

Returnerer en iterator, der peger lige før det første element i strengobjektet. Overvej følgende kodesegment:

streng strCol=snor('Jeg elsker dig');
basic_string<forkælelse> ::reverse_iteratoriter=strCol.gør();
koste<< *iter<< ' n';

Outputtet er nul, hvilket ikke er noget, da der ikke er noget konkret element lige før det første element.

render () const noexcept

Returnerer en iterator, der peger lige før det første element i strengobjektet. Når objektkonstruktionen går forud for const, udføres udtrykket rend () const i stedet for rend (). Overvej følgende kodesegment:

konststreng strCol=snor('Jeg elsker dig');
basic_string<forkælelse> ::const_reverse_iteratoriter=strCol.gør();
koste<< *iter<< ' n';

Outputtet er nul. Bemærk, at const_reverse_iterator denne gang er blevet brugt i stedet for bare reverse_iterator til at modtage den returnerede iterator.

Strengmodifikatorer

En modifikator, der ændrer strengobjektet, kan også tage eller returnere en iterator.

Tilføjer

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

Føjer det højre strengobjekt til det venstre strengobjekt. Eksempel:

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

Output er jeg elsker dig. Glem ikke, at strCol1 += strCol2 er det samme som strCol1 = strCol1 +strCol2.

basic_string & operator+= (const charT* s)

Tilføjer en streng bogstaveligt til en samling af strengobjekter. Eksempel:

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

Output: Jeg elsker dig.

basic_string & operator+= (tegn c)

Tilføjer et enkelt tegn til en objektstreng. Eksempel:

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

Output: Jeg elsker dig.

basic_string & operator+= (initializer_list)

Tilføjer en initialiseringsliste. Eksempel:

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

Output: Jeg elsker dig. Det er altid godt at tilføje nul, 0 i slutningen af ​​en tegninitialiseringsliste.

basic_string & append (const basic_string & str)

Tilføjer argumentstrengobjektet til hovedstrengobjektet. Eksempel:

streng strCol1=snor('Jeg elsker');
streng strCol2=snor('dig');
strCol1.Tilføj(strCol2);
koste<<strCol1<< ' n';

Output: Jeg elsker dig.

basic_string & append (const charT* s)

Tilføjer et strengt bogstaveligt argument til hovedstrengen. Eksempel

streng strCol=snor('Jeg elsker');
strCol=strCol.Tilføj('dig');
koste<<strCol<< ' n';

Output: Jeg elsker dig.

basic_string & append (initializer_list)

Tilføjer initialiseringslisten, som er et argument, til hovedstrengen. Eksempel:

streng strCol=snor('Jeg elsker');
strCol=strCol.Tilføj({'','og','eller','dig',' 0'});
koste<<strCol<< ' n';

Output: Jeg elsker dig. Det er altid godt at tilføje nul, 0 -tegnet i slutningen af ​​en initialiseringsliste.

basic_string & append (size_type n, charT c)

Tilføjer n af samme karakter. Eksempel:

streng strCol=snor('fane');
strCol=strCol.Tilføj(2, 'eller');
koste<<strCol<< ' n';

Output: tabu.

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

Føjer de første n elementer i en streng bogstaveligt til hovedstrengobjektet. Eksempel:

streng strCol=snor('Jeg elsker');
strCol=strCol.Tilføj('du så', 4);
koste<<strCol<< ' n';

Output er: Jeg elsker dig. Hvis n er større end længden på bogstavet, kastes en length_error -undtagelse.

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

Tilføjer n tegn fra indekset, pos til hovedstrengen. Eksempel:

streng strCol=snor('Jeg elsker');
strCol=strCol.Tilføj(har du det, 2, 4);
koste<<strCol<< ' n';

Output: Jeg elsker dig. En undtagelse ville også blive kastet her, se senere.

Tildeling

basic_string&tildele(konstbasic_string&s)

Tildeler argumentstrengobjektet til hovedstrengen og erstatter alt indhold, der var der.

streng strCol1=snor('Jeg elsker dig');
streng strCol2=snor('Hun har brug for mig');
strCol1=strCol1.tildele(strCol2);
koste<<strCol1<< ' n';

Output: Hun har brug for mig.

basic_string&tildele(konstdiagram*s)

Tildeler et strengt bogstaveligt argument til hovedstrengen og erstatter alt indhold, der var der.

streng strCol=snor('Jeg elsker dig');
strCol=strCol.tildele('Hun har brug for mig');
koste<<strCol<< ' n';

Output: Hun har brug for mig.

basic_string&tildele(initializer_list<diagram>)

Tildeler et initialiseringsliste -argument til hovedstrengen,erstatte alt indhold, der var der.
[cc lang='c'undslap='sand'bredde='780']
streng strCol=snor('Jeg elsker dig');
strCol=strCol.tildele({'S','h','Og','','n','Og','Og','d','s','','m','Og',' 0'});
koste<<strCol<< ' n';

Output: Hun har brug for mig. Det er godt altid at tilføje nul, 0 i slutningen af ​​tegnlisten for at danne en streng bogstavelig.

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

Tildeler hovedstrengen de første n tegn i et streng -bogstaveligt argument og erstatter alt indhold, der var der.

streng strCol=snor('Jeg elsker dig');
strCol=strCol.tildele('Hun har brug for mig', 9);
koste<<strCol<< ' n';

Output: Hun har brug for.

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

Tildeler et argument af n af de samme tegn til hovedstrengen og erstatter alt indhold, der var der.

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

Output: eeee

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

Tildeler n tegn i et strengobjektargument, der starter fra pos, til hovedstrengen og erstatter alt indhold, der var der.

streng strCol=snor('Jeg elsker dig');
strCol=strCol.tildele('Hun har brug for mig', 4, 5);
koste<<strCol<< ' n';

Output: behov. Ville kaste en undtagelse - se senere.

Indsætning

basic_string&indsæt(størrelse_type pos, konstbasic_string&s)

Indsætter strengeobjektargumentet i hovedstrengen, ved indeks, pos.

streng strCol1=snor('Jeg elsker dig');
streng strCol2=snor('had og');
strCol1=strCol1.indsæt(2,strCol2);
koste<<strCol1<< ' n';

Output: Jeg hader og elsker dig. Ville kaste en undtagelse - se senere.

basic_string&indsæt(størrelse_type pos1, konstbasic_string&
s,størrelse_type pos2,størrelse_type n=npos)

Indsætter en længde på n tegn fra pos2 i strengobjektargument, til hovedstrengen, ved indeks, pos1.

streng strCol1=snor('Jeg elsker dig');
streng strCol2=snor('had, lyst og behov');
strCol1=strCol1.indsæt(2,strCol2, 6, 9);
koste<<strCol1<< ' n';

Output: Jeg vil og elsker dig.

iteratorindsats (const_iterator p, charT c)

Indsætter en bestemt karakter, som er et argument, i den position, som iteratoren peger på. Returnerer en iterator for placeringen af ​​det nyligt indsatte tegn.

streng strCol=snor('Jeg elsker dig');
basic_string<forkælelse> ::iteratoriter=strCol.begynde();
++iter; ++iter; ++iter; ++iter; ++iter; ++iter;
basic_string<forkælelse> ::iteratornetværk=strCol.indsæt(iter, 'd');
koste<< *netværk<< ' n';
koste<<strCol<< ' n';

Outputtet er:

'D'

jeg elskede dig

iteratorindsats (const_iterator p, size_type n, charT c)

Indsætter n af samme karakter af argumentet i den position, som iteratoren peger på. Returnerer en iterator for positionen for begyndelsen af ​​de nyligt indsatte samme tegn.

streng strCol=snor('Tab i landet.');
basic_string<forkælelse> ::iteratoriter=strCol.begynde();
++iter; ++iter; ++iter;
basic_string<forkælelse> ::iteratornetværk=strCol.indsæt(iter, 2, 'eller');
koste<< *netværk<< ' n';
koste<<strCol<< ' n';

Outputtet er:

'eller'

Tabu i landet.

basic_string&indsæt(størrelse_type pos, konstdiagram*s)

Indsætter en argumentstreng bogstaveligt ved indekset, pos i hovedstrengen.

streng strCol=snor('Tab i landet.');
strCol=strCol.indsæt(3, 'oo');
koste<<strCol<< ' n';

Output: Tabu i landet.

basic_string&indsæt(størrelse_type pos, konstdiagram*s,størrelse_type n)

Indsætter de første n tegn i argumentstrengen bogstaveligt, i indekset, pos i hovedstrengen.

streng strCol=snor('Tab i landet.');
strCol=strCol.indsæt(3, 'oooo', 2);
koste<<strCol<< ' n';

Output: Tabu i landet.

Udskiftning

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=snor('Jeg elsker dig');
streng strCol2=snor('hader dig og');
strCol1=strCol1.erstatte(2, 4,strCol2);
koste<<strCol1<< ' n';

Output: Jeg hader dig og dig. Ville kaste en undtagelse - 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 indekset, pos1, med n2 -tegn i argumentstrengobjektet fra indekset, pos2.

streng strCol1=snor('Jeg elsker dig');
streng strCol2=snor('vi hader ham og hende');
strCol1=strCol1.erstatte(2, 4,strCol2, 3, 12);
koste<<strCol1<< ' n';

Output: Jeg hader ham og dig.

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

Erstatter n1 -tegn i hovedstrengobjektet fra indekset, pos1, med de første n2 -tegn i det bogstavelige strengargument.

streng strCol1=snor('Jeg elsker dig');
strCol1=strCol1.erstatte(2, 4, 'hader ham og hende', 12);
koste<<strCol1<< ' n';

Output: Jeg hader ham og dig.

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

Erstatter n tegn i hovedstrengobjektet fra indeks, pos, med det bogstavelige strengargument.

streng strCol1=snor('Jeg elsker dig');
strCol1=strCol1.erstatte(2, 4, 'hader ham og');
koste<<strCol1<< ' n';

Output: Jeg hader ham og dig.

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

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

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

Output: Et dårligt tabu der ..

slet iterator (const_iterator p)

Fjerner et tegn på den position, som iteratoren peger på; returnerer derefter iteratorpositionen, som nu er optaget af det tegn, der var ved siden af ​​dette tegn (eller slut ()). Følgende kode illustrerer dette:

streng strCol=snor('abcd');
basic_string<forkælelse> ::iteratoriter=strCol.begynde();
++iter; ++iter;
strCol.slette(iter);
koste<<strCol[0] << '' <<strCol[1] << '
'
<<strCol[2]<< ' n';

Output: a b d

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

Fjerner n tegn fra indekset, pos.

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

Output: a d

ugyldig push_back (tegn c)

Sådan tilføjes et enkelt tegn i slutningen af ​​strengen:

streng strCol=snor('abcd');
strCol.skub tilbage('5');
koste<<strCol<< ' n';

Output: abcd5

ugyldig pop_back ()

Fjerner det sidste tegn uden at returnere det. Størrelsen på strengen reduceres med 1.

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

Output: abcd

void swap (basic_string & s)

Bogstaverne i to strengobjekter kan byttes.

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

Outputtet er:

'1234567'
'abcde'

Strengoperationer

const charT* c_str () const noexcept

Returnerer en markør til det første element i strengen. Markøren kan øges.

konststreng strCol=snor('abcde');
konst forkælelse*s. s=strCol.c_str();
koste<< *s. s<< ' n';
++s. s;
koste<< *s. s<< ' n';

Output er:

til
b

På grund af den anden const i overskriften kan programmet ikke ændre noget tegn i strengen. Konstruktionen går forud for konst.

const charT* data () const noexcept

Returnerer en markør til det første element i strengen. Markøren kan øges.

konststreng strCol=snor('abcde');
konst forkælelse*s. s=strCol.data();
koste<< *s. s<< ' n';
++s. s;
koste<< *s. s<< ' n';

Output er:

til
b

På grund af den anden const i overskriften kan programmet ikke ændre noget tegn i strengen. Konstruktionen går forud for konst.

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

Returnerer et strengobjekt med n tegn for understrengen, der starter fra indekset, pos.

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

Output: cdef

find () Medlemsfunktioner

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

Leder efter et understrengsobjekt, der starter fra indekset, pos. Hvis den findes, returneres begyndelsen på understrengen i hovedstrengen.

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

Produktion:

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

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

Leder efter en understreng bogstaveligt talt begyndende fra indekset, pos. Hvis den findes, returneres begyndelsen på understrengen i hovedstrengen.

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

Da pos = 0 er standard, kunne 0 i argumentet have været udeladt.

Output: 3

Returnerer -1, når den ikke findes.

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

Leder efter de første n tegn i en understreng bogstaveligt talt begyndende fra indekset, pos. Hvis den findes, returneres begyndelsen på understrengen i hovedstrengen.

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

Output: 4

Returnerer -1, når den ikke findes.

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

Leder efter tegnet, c begyndende fra indekset, pos. Hvis den findes, returneres begyndelsen på understrengen i hovedstrengen. Hvis den ikke findes, returneres -1.

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

Output: -1

Følgende reverse find () medlemsfunktioner findes:

størrelse_type rfind(konstbasic_string&s,størrelse_type pos=npos) konstnoget undtagen;
størrelse_type rfind(konstdiagram*s,størrelse_type pos=npos) konst;
størrelse_type rfind(konstdiagram*s,størrelse_type pos,størrelse_type n) konst;
størrelse_type rfind(charT c,størrelse_type pos=npos) konst;

Sammenligning af medlemsfunktioner

int sammenligne (const basic_string & str) const noexcept

Sammenligner argumentstrengobjektet med hovedstrengobjektet. Hvis hovedstrengen opstår før argumentet (i ordbogen) returnerer det et positivt tal. Hvis det forekommer efter hovedstrengen, returnerer det et negativt tal. Hvis de to strenge er de samme, returnerer den nul.

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

Output: -13

int sammenligne (const charT* s) const

Samme som ovenfor, men argumentet er en streng bogstavelig.

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

Output: 0

Strygeoperatører

Disse operatører kan anvendes på strengobjekter og ikke nødvendigvis strengliteraler.

+

Sammenkæder to strengobjekter og returnerer sammenkædningen.

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

Output: dans på månen.

==

Returnerer 1 for true, hvis strengobjekterne er de samme; og nul for falsk, hvis de ikke er det.

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

Output: 0

! =

Returnerer 1, hvis strengobjekterne ikke er de samme, og nul, hvis de er.

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

Output: 1

<

Returnerer 1, hvis den venstre operand er mindre end den højre operand ifølge ordbogen, eller nul, hvis den ikke er det.

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

Output: 0

For almindelige tegn i C ++, i stigende rækkefølge, kommer tal før store bogstaver, som kommer før små bogstaver. Rumtegnet kommer før nul og dem alle.

C ++ Typer af hovedstreng

forkælelse

Char -typen er den originale C ++ - type og vil typisk gemme et tegn i 8 bits.

char16_t

Dette gemmer et tegn i 16 bits.

char32_t

Dette gemmer et tegn i 32 bit.

wchar_t

char16_t og char32_t er brede tegn. wchar_t er en bred karakter, der er proprietær og implementeringsdefineret.

Disse typer kaldes træk. C ++ omtaler dem imidlertid teknisk set som specialiseringer i træk. Denne artikel har fokuseret på typen af ​​kul. Tilgangen til de andre typer er lidt anderledes - se senere.

Andre strengoperationsmedlemsfunktioner

Signaturerne for andre strengoperationsfunktioner er:

størrelse_type find_first_of(konstbasic_string&s,størrelse_type pos= 0) konstnoget undtagen;
størrelse_type find_first_of(konstdiagram*s,størrelse_type pos,størrelse_type n) konst;
størrelse_type find_first_of(konstdiagram*s,størrelse_type pos= 0) konst;
størrelse_type find_first_of(charT c,størrelse_type pos= 0) konst;
size_type find_last_of(konstbasic_string&s,størrelse_type pos=npos) konstnoget undtagen;
size_type find_last_of(konstdiagram*s,størrelse_type pos,størrelse_type n) konst;
size_type find_last_of(konstdiagram*s,størrelse_type pos=npos) konst;
size_type find_last_of(charT c,størrelse_type pos=npos) konst;
size_type find_first_not_of(konstbasic_string&s,størrelse_type pos= 0) konstnoget undtagen;
size_type find_first_not_of(konstdiagram*s,størrelse_type pos,størrelse_type n) konst;
size_type find_first_not_of(konstdiagram*s,størrelse_type pos= 0) konst;
size_type find_first_not_of(charT c,størrelse_type pos= 0) konst;
size_type find_last_not_of(konstbasic_string&s,størrelse_type pos=npos) konstnoget undtagen;
size_type find_last_not_of(konstdiagram*s,størrelse_type pos,størrelse_type n) konst;
size_type find_last_not_of(konstdiagram*s,størrelse_type pos=npos) konst;
size_type find_last_not_of(charT c,størrelse_type pos=npos) konst;

Konklusion

C ++ har strenglitteraler og strengobjekter. Strengeobjektet har en samling af tegn i rækkefølge, der ligner en række tegn i rækkefølge. Forskellen mellem strengsamlingen og en matrix er, at strengsamlingen kan vokse i længde eller krympe i længden. Et strengobjekt instantieres (konstrueres) fra en strengklasse. Et strengobjekt er en datastruktur med medlemsfunktioner. Medlemsfunktionerne kan klassificeres under overskrifterne til objektkonstruktion, elementadgang, strengkapacitet, strengmedlemsfunktioner med iteratorargumenter og returtyper og strengmodifikatorer. Strenge ligestilling og relationelle operatører findes også.