C++ String Class gebruiken

How Use C String Class



Een letterlijke tekenreeks is een reeks tekens in een constante array-pointer die wordt afgesloten met het nul-teken, . Wanneer geïdentificeerd door een variabele, kan de letterlijke tekenreeks niet echt in lengte afnemen of toenemen. Veel bewerkingen kunnen niet op de letterlijke tekenreeks worden uitgevoerd. Er is dus behoefte aan een stringklasse. De tekenreeksklasse C++ is voor een gegevensstructuur, een verzameling tekens in volgorde, waarmee lidfuncties en operators op de tekens kunnen reageren. De tekenreeksklasse staat meer manipulaties toe op de corresponderende tekenreeksletterlijk, dan alleen de tekenreeksletterlijk. U moet een goede kennis hebben van letterlijke tekenreeksen om dit artikel te begrijpen.

Klasse en objecten

Een klasse is een set variabelen en functies die samenwerken; waar aan de variabelen geen waarden zijn toegewezen. Wanneer waarden aan de variabelen worden toegewezen, wordt de klasse een object. Verschillende waarden die aan dezelfde klasse worden gegeven, resulteren in verschillende objecten; dat wil zeggen, verschillende objecten zijn dezelfde klasse met verschillende waarden. Het maken van een object uit een klasse zou het object instantiëren.







De naam, string, is een klasse. Een object dat is gemaakt op basis van de tekenreeksklasse heeft een door de programmeur gekozen naam.



Een functie die bij de klasse hoort, is nodig om een ​​object uit de klasse te instantiëren. In C++ heeft die functie dezelfde naam als de naam van de klasse. Objecten die zijn gemaakt (geïnstantieerd) uit de klasse hebben verschillende namen die door de programmeur zijn gegeven.



Een object maken vanuit een klasse betekent het object construeren; het betekent ook instantiëren.





Een C++-programma dat de string-klasse gebruikt, begint met de volgende regels bovenaan het bestand:

#erbij betrekken
#erbij betrekken
namespace std; gebruiken;

De eerste regel is voor invoer/uitvoer. De tweede regel is om het programma alle functies van de tekenreeksklasse te laten gebruiken. Met de derde regel kan het programma de namen in de standaardnaamruimte gebruiken.



Een functie overbelasten

Wanneer twee of meer verschillende functiehandtekeningen dezelfde naam hebben, wordt die naam overbelast genoemd. Wanneer een functie wordt aangeroepen, bepalen het aantal en het type argumenten welke functie wordt uitgevoerd.

Bouw

snaar()
De volgende instructie construeert een string van nul lengte zonder karakter.

string strKol=snaar();

Het begint met de naam van de klasse (objecttype), string. Dit wordt gevolgd door de naam voor de objectstring, gegeven door de programmeur. De toewijzingsoperator volgt; dan de naam van de constructor met lege haakjes. Hier is strCol het geïnstantieerde object met alle gegevensleden (eigenschappen) en lidfuncties (methoden).
tekenreeks(str)
Dit is vergelijkbaar met het bovenstaande, maar neemt een letterlijke tekenreeks of een identifier als argument in de constructor. De volgende stelling illustreert dit:

string strKol=snaar('Ik houd van je');

Constructie met initialisatielijst

De volgende code illustreert dit:

string strKol=snaar({'L','','de','of','v','En','','en','of','u',' 0'});

De letterlijke tekenreeks is ik hou van je. Let op het nul-teken aan het einde van de initialisatielijst.

tekenreeks (str, n)

Dit vormt een stringverzameling, van de eerste n karakters van een andere string. De volgende code illustreert dit:

charP[] = 'Ik houd van je';
string strKol=snaar(P, 6);
kosten<<strCol<< 'N';

De output is I love met de eerste 6 karakters van I love you. Onthoud: de enkele spatie is een teken.

tekenreeks (str, pos, n)

Dit vormt een tekenreeksverzameling van n tekens, beginnend vanaf de op nul gebaseerde geïndexeerde positie, pos, van een andere tekenreeks. De volgende code illustreert dit:

charP[] = 'Ik houd van je';
string strKol=snaar(P, 2, 4);
kosten<<strCol<< 'N';

De output is, liefde.

Voor de bovenstaande twee gevallen, als n groter is dan de grootte van de tekenreeks, wordt de out_of_range-uitzondering gegenereerd - zie later.

tekenreeks (n, 'c')

Vormt een verzameling van n tekens, waarbij alle tekens hetzelfde zijn. Overwegen,

string strKol=snaar(5,'En');
kosten<<strCol<< 'N';

De output is, eeee, 5 e's.

Een tekenreeks toewijzen

Een string kan als volgt worden toegewezen, nadat beide strings gedeclareerd zijn:

tekenreeks strKol1=snaar('Ik houd van je');
tekenreeks strCol2;
strCol2=strKol1;
kosten<<strCol2<< 'N';

De output is, ik hou van je.

Bouwen met Iterator

Een iterator biedt een generieke weergave van scannen, via de waarden van een verzameling. Een syntaxis om een ​​string met iterator te maken, is:

sjabloon<klasse InputIterator>
basis_string(InputIterator begin,InputIterator einde, constToewijzer&
tot=Toewijzer());

Dit construeert een string voor het bereik [begin, end) – zie details later.

Een string vernietigen

Om een ​​string te vernietigen, laat je hem gewoon buiten bereik gaan.

Toegang tot stringklasse-elementen

Een geïnstantieerd tekenreeksobject kan worden gesubscript (geïndexeerd) zoals een array. Index tellen begint vanaf nul.

stringNaam[i]

De bewerking stringName[i] retourneert een verwijzing naar het teken (element) op de ieindex van de karakterverzameling. De volgende code-output v:

string strKol=snaar('Ik houd van je');
charch=strCol[4];
kosten<<ch<< 'N';

stringName[i] const

De bewerking stringName[i] const wordt uitgevoerd in plaats van stringName[i] wanneer het stringobject een constant object is. Het wordt bijvoorbeeld gebruikt in de volgende code:

conststring strKol=snaar('Ik houd van je');
charch=strCol[4];
kosten<<ch<< 'N';

De expressie retourneert een constante verwijzing naar de ieelement van het stringobject. Geen van de elementen van de string kan worden gewijzigd.

Een karakter toewijzen met Subscript

Een teken kan als volgt aan een niet-constant tekenreeksobject worden toegewezen:

string strKol=snaar('Ik bel');
strCol[2] = 'F';
kosten<<strCol<< 'N';

De output is ik val. 'c' werd gewijzigd in 'f'.

stringName.at(i)

stringName.at(i) lijkt op stringName[i], maar stringName.at(i) is betrouwbaarder. De volgende code laat zien hoe deze moet worden gebruikt:

string strKol=snaar('Ik houd van je');
charch=strKol.Bij(4);
kosten<<ch<< 'N';

at() is eigenlijk een lidfunctie van een tekenreeksklasse.

stringName.at(i) const

stringName.at(i) const lijkt op stringName[i] const, maar stringName.at(i) const is betrouwbaarder. stringName.at(i) const wordt uitgevoerd in plaats van stringName.at(i) wanneer het stringobject een constant stringobject is. Het wordt bijvoorbeeld gebruikt in de volgende code:

conststring strKol=snaar('Ik houd van je');
charch=strKol.Bij(4);
kosten<<ch<< 'N';

at() const is eigenlijk een lidfunctie van een tekenreeksklasse.

Een waarde toewijzen met de functie at()

Een waarde kan als volgt worden toegewezen aan een niet-constant tekenreeksobject, met de functie at():

string strKol=snaar('Ik bel');
strKol.Bij(2) = 'F';
kosten<<strCol<< 'N';

De output is ik val.

Probleem met Sub-scripting

Het probleem met subscripting (indexering) is dat als de index buiten bereik is, het verkeerde resultaat kan worden verkregen of dat er tijdens runtime een fout kan worden gegenereerd.

voorkant()

Dit retourneert een verwijzing naar het eerste element van het stringobject, zonder het element te verwijderen. De uitvoer van de volgende code is 'I'.

string strKol=snaar('Ik houd van je');
charch=strKol.voorkant();
kosten<<ch<< 'N';

Het teken wordt niet verwijderd uit het tekenreeksobject.

front() const

Wanneer de constructie van het stringobject wordt voorafgegaan door const, wordt de expressie front() const uitgevoerd in plaats van front(). Het wordt bijvoorbeeld gebruikt in de volgende code.

conststring strKol=snaar('Ik houd van je');
charch=strKol.voorkant();
kosten<<ch<< 'N';

Er wordt een constante referentie geretourneerd. Het element wordt niet verwijderd uit het stringobject. Er kan geen teken worden gewijzigd voor een constant tekenreeksobject.

rug()

Dit retourneert een verwijzing naar het laatste element van het stringobject, zonder het element te verwijderen. De uitvoer van de volgende code is 'u'.

string strKol=snaar('Ik houd van je');
charch=strKol.rug();
kosten<<ch<< 'N';

back() const

Wanneer de constructie van het tekenreeksobject wordt voorafgegaan door const, wordt de expressie back() const uitgevoerd in plaats van back(). Het wordt bijvoorbeeld gebruikt in de volgende code.

conststring strKol=snaar('Ik houd van je');
charch=strKol.rug();
kosten<<ch<< 'N';

Er wordt een constante referentie geretourneerd. Het element wordt niet verwijderd uit het stringobject.

Stringcapaciteit

size_type capacity() const nobehalve

Het totale aantal tekens dat de tekenreeks kan bevatten zonder dat opnieuw moet worden toegewezen, wordt geretourneerd door deze capaciteitslidfunctie. Een codesegment hiervoor is:

string strKol=snaar();
intop een=strKol.capaciteit();
kosten<<op een<< 'N';

De output is 15 op mijn computer.

reserve(n)

Geheugenruimte is niet altijd beschikbaar in de gratis winkel. Extra ruimte kan vooraf gereserveerd worden. Overweeg het volgende codesegment:

string strKol=snaar('Liefde');
strKol.reserveren(6);
kosten<<strKol.capaciteit() << 'N';

De output is 15 op mijn computer.

size() const nobehalve

Dit retourneert het aantal tekens in de tekenreeks. De volgende code illustreert:

string strKol=snaar('Ik houd van je');
intop een=strKol.maat();
kosten<<op een<< 'N';

De uitvoer is 10, zonder het teken nul, .

lengte() const nobehalve

-hetzelfde als maat().
Opmerking:maat() <=capaciteit().

shrink_to_fit()

Kan capaciteit() verkleinen tot maat() door hertoewijzing te veroorzaken; het is niet verplicht. De volgende code laat dit zien:

string strKol=snaar('Ik houd van je');
strKol.reserveren(12);
strKol.verkleinen_naar_passen();
ints=strKol.maat();
kosten<<s<< 'N';

De uitvoer is 10 en niet 12 of 16. De functie retourneert void.

formaat wijzigen(sz), formaat wijzigen(sz,'c')

Dit verkleint de tekenreeks. Als het nieuwe formaat kleiner is dan het oude formaat, worden de elementen aan het einde gewist. Als de nieuwe grootte langer is, wordt tegen het einde een standaardteken toegevoegd. Gebruik de functie resize() met twee argumenten om een ​​bepaald teken toe te voegen. Het volgende codesegment illustreert het gebruik van de twee functies:

string strKol=snaar('Ik houd van je');
strKol.formaat wijzigen(6);
kosten<< 'Nieuwe maat van strCol: ' <<strKol.maat() << 'N';
tekenreeks strKol1=snaar('Ik hou van', 'En');
strKol1.formaat wijzigen(12);
kosten<< 'Nieuwe grootte van strCol1: ' <<strKol1.maat() << 'N';

De uitvoer is:

Nieuwe maat van strCol: 6
Nieuwe maat van strCol1: 12
De functie retourneert void.

clear() neebehalve

Verwijdert alle elementen uit de tekenreeks, zoals het volgende codesegment illustreert:

string strKol=snaar('Ik houd van je');
strKol.Doorzichtig();
kosten<<strKol.maat() << 'N';

De uitvoer is 0. De functie retourneert void.

lege() const neebehalve

Dit retourneert 1 voor waar als er geen teken in het tekenreeksobject staat, of 0 voor onwaar als het tekenreeksobject niet leeg is. De volgende code illustreert dit:

tekenreeks strKol1=snaar('Ik houd van je');
kosten<<strKol1.leeg() << 'N';
tekenreeks strCol2=snaar();
kosten<<strKol2.leeg() << 'N';

De uitvoer is:

0
1

Terugkerende iterators en de tekenreeksklasse

Een iterator is als een aanwijzer, maar heeft meer functionaliteit dan de aanwijzer.

begin() noexcept

Retourneert een iterator die verwijst naar het eerste teken (element) van het tekenreeksobject, zoals in het volgende codesegment:

string strKol=snaar('Ik houd van je');
basis_string<char> ::iteratoriter=strKol.beginnen();
kosten<< *iter<< 'N';

De uitvoer is 'ik'. Let op de manier waarop de declaratie die de iterator ontvangt, is gedeclareerd. De iterator wordt gederefereerd in een retourexpressie om de waarde te verkrijgen, op dezelfde manier waarop een pointer wordt gederefereerd.

begin() const nobehalve;

Retourneert een iterator die verwijst naar het eerste element van de verzameling tekenreeksobjecten. Wanneer de objectconstructie wordt voorafgegaan door const, wordt de expressie begin() const uitgevoerd in plaats van begin(). Onder deze voorwaarde kan het corresponderende element in het object niet worden gewijzigd. Het wordt bijvoorbeeld gebruikt in de volgende code.

conststring strKol=snaar('Ik houd van je');
basis_string<char> ::const_iteratoriter=strKol.beginnen();
kosten<< *iter<< 'N';

De uitvoer is 'ik'. Merk op dat const_iterator deze keer is gebruikt, in plaats van alleen iterator, om de geretourneerde iterator te ontvangen.

end() neebehalve

Retourneert een iterator die direct voorbij het laatste element van het tekenreeksobject wijst. Overweeg het volgende codesegment:

string strKol=snaar('Ik houd van je');
basis_string<char> ::iteratoriter=strKol.einde();
kosten<< *iter<< 'N';

De uitvoer is null, wat niets is, omdat er geen concreet element is na het laatste element.

end() const nobehalve

Retourneert een iterator die direct voorbij het laatste element van het tekenreeksobject wijst. Wanneer de constructie van het stringobject wordt voorafgegaan door const, wordt de expressie end() const uitgevoerd in plaats van end(). Overweeg het volgende codesegment:

conststring strKol=snaar('Ik houd van je');
basis_string<char> ::const_iteratoriter=strKol.einde();
kosten<< *iter<< 'N';

De uitvoer is nul. Merk op dat const_iterator deze keer is gebruikt, in plaats van alleen iterator, om de geretourneerde iterator te ontvangen.

Omgekeerde iteratie

Het is mogelijk om een ​​iterator te hebben die itereert van het eigenlijke einde tot net voor het eerste element:

rbegin() neebehalve

Retourneert een iterator die verwijst naar het laatste element van het door een tekenreeks geïnstantieerde object, zoals in het volgende codesegment:

string strKol=snaar('Ik houd van je');
basis_string<char> ::reverse_iteratoriter=strKol.opnieuw beginnen();
kosten<< *iter<< 'N';

De uitvoer is 'u'. Let op de manier waarop de aangifte die de omgekeerde iterator ontvangt, is gedeclareerd. De iterator wordt gederefereerd in een retourexpressie om de waarde te verkrijgen, op dezelfde manier waarop een pointer wordt gederefereerd.

rbegin() const nobehalve;

Retourneert een iterator die verwijst naar het laatste element van het tekenreeksobject. Wanneer de objectconstructie wordt voorafgegaan door const, wordt de expressie rbegin() const uitgevoerd in plaats van rbegin(). Onder deze voorwaarde kan het corresponderende element in het object niet worden gewijzigd. De functie wordt bijvoorbeeld gebruikt in de volgende code.

conststring strKol=snaar('Ik houd van je');
basis_string<char> ::const_reverse_iteratoriter=strKol.opnieuw beginnen();
kosten<< *iter<< 'N';

De uitvoer is 'u'. Merk op dat const_reverse_iterator deze keer is gebruikt, in plaats van alleen reverse_iterator, om de geretourneerde iterator te ontvangen.

render () neebehalve

Retourneert een iterator die net voor het eerste element van het tekenreeksobject wijst. Overweeg het volgende codesegment:

string strKol=snaar('Ik houd van je');
basis_string<char> ::reverse_iteratoriter=strKol.maakt();
kosten<< *iter<< 'N';

De uitvoer is null, wat niets is, omdat er geen concreet element is net voor het eerste element.

render () const nobehalve

Retourneert een iterator die net voor het eerste element van het tekenreeksobject wijst. Wanneer de objectconstructie wordt voorafgegaan door const, wordt de uitdrukking rend() const uitgevoerd in plaats van rend(). Overweeg het volgende codesegment:

conststring strKol=snaar('Ik houd van je');
basis_string<char> ::const_reverse_iteratoriter=strKol.maakt();
kosten<< *iter<< 'N';

De uitvoer is nul. Merk op dat const_reverse_iterator deze keer is gebruikt, in plaats van alleen reverse_iterator, om de geretourneerde iterator te ontvangen.

String-modificaties

Een modifier die het stringobject wijzigt, kan ook een iterator nemen of retourneren.

toevoegen

basis_string&operator+ =(constbasis_string&P)

Voegt het rechter string-object toe aan het linker string-object. Voorbeeld:

tekenreeks strKol1=snaar('Ik hou van');
tekenreeks strCol2=snaar(' jij');
strKol1+ =strCol2;
kosten<<strKol1<< 'N';

De output is ik hou van je. Vergeet niet dat strCol1 += strCol2 hetzelfde is als strCol1 = strCol1+strCol2.

basic_string& operator+=(const charT* s)

Voegt een letterlijke tekenreeks toe aan een verzameling tekenreeksobjecten. Voorbeeld:

string strKol=snaar('Ik hou van');
strCol+ = ' jij';
kosten<<strCol<< 'N';

Uitgang: ik hou van je.

basic_string& operator+=(charT c)

Voegt een enkel teken toe aan een objectreeks. Voorbeeld:

string strKol=snaar('Ik hou van je');
strCol+ = 'u';
kosten<<strCol<< 'N';

Uitgang: ik hou van je.

basic_string& operator+=(initializer_list)

Voegt een initialisatielijst toe. Voorbeeld:

string strKol=snaar('Ik hou van');
strCol+ = {'','en','of','u',' 0'};
kosten<<strCol<< 'N';

Uitgang: ik hou van je. Het is altijd goed om de nul, aan het einde van een tekeninitialisatielijst toe te voegen.

basic_string& append(const basic_string& str)

Voegt het argument string-object toe aan het hoofd string-object. Voorbeeld:

tekenreeks strKol1=snaar('Ik hou van');
tekenreeks strCol2=snaar(' jij');
strKol1.toevoegen(strCol2);
kosten<<strKol1<< 'N';

Uitgang: ik hou van je.

basic_string& append(const charT* s)

Voegt een letterlijk tekenreeksargument toe aan de hoofdtekenreeks. Voorbeeld

string strKol=snaar('Ik hou van');
strCol=strKol.toevoegen(' jij');
kosten<<strCol<< 'N';

Uitgang: ik hou van je.

basic_string& append(initializer_list)

Voegt de initialisatielijst, die een argument is, toe aan de hoofdreeks. Voorbeeld:

string strKol=snaar('Ik hou van');
strCol=strKol.toevoegen({'','en','of','u',' 0'});
kosten<<strCol<< 'N';

Uitgang: ik hou van je. Het is altijd goed om het nul, -teken toe te voegen aan het einde van een initialisatielijst.

basic_string& append(size_type n, charT c)

Voegt n van hetzelfde teken toe. Voorbeeld:

string strKol=snaar('tabblad');
strCol=strKol.toevoegen(2, 'of');
kosten<<strCol<< 'N';

Uitgang: taboe.

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

Voegt de eerste n elementen van een letterlijke tekenreeks toe aan het hoofdtekenreeksobject. Voorbeeld:

string strKol=snaar('Ik hou van');
strCol=strKol.toevoegen(' je zo', 4);
kosten<<strCol<< 'N';

De output is: ik hou van je. Als n groter is dan de lengte van de letterlijke waarde, wordt een exception length_error gegenereerd.

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

Voegt n tekens uit de index, pos toe aan de hoofdreeks. Voorbeeld:

string strKol=snaar('Ik hou van');
strCol=strKol.toevoegen(heb je zo', 2, 4);
kosten<<strCol<< 'N';

Uitgang: ik hou van je. Hier zou ook een uitzondering worden gegooid, zie later.

Toewijzen

basis_string&toewijzen(constbasis_string&P)

Wijst het argument string-object toe aan de hoofdstring, waarbij alle aanwezige inhoud wordt vervangen.

tekenreeks strKol1=snaar('Ik houd van je');
tekenreeks strCol2=snaar('Ze heeft me nodig');
strKol1=strKol1.toewijzen(strCol2);
kosten<<strKol1<< 'N';

Uitgang: ze heeft me nodig.

basis_string&toewijzen(constgrafiek*s)

Wijst een letterlijk tekenreeksargument toe aan de hoofdtekenreeks en vervangt alle inhoud die er was.

string strKol=snaar('Ik houd van je');
strCol=strKol.toewijzen('Ze heeft me nodig');
kosten<<strCol<< 'N';

Uitgang: ze heeft me nodig.

basis_string&toewijzen(initializer_list<grafiek>)

Wijst een initialisatielijstargument toe aan de hoofdtekenreeks,het vervangen van alle inhoud die er was.
[cc lang='C'ontsnapte='waar'breedte='780']
string strKol=snaar('Ik houd van je');
strCol=strKol.toewijzen({'S','H','En','','N','En','En','NS','s','','m','En',' 0'});
kosten<<strCol<< 'N';

Uitgang: ze heeft me nodig. Het is goed om altijd de nul toe te voegen, aan het einde van de tekenlijst, om een ​​letterlijke tekenreeks te vormen.

basis_string&toewijzen(constgrafiek*s,size_type n)

Wijst de eerste n tekens van een letterlijk tekenreeksargument toe aan de hoofdtekenreeks en vervangt alle inhoud die er was.

string strKol=snaar('Ik houd van je');
strCol=strKol.toewijzen('Ze heeft me nodig', 9);
kosten<<strCol<< 'N';

Uitgang: ze heeft het nodig.

basis_string&toewijzen(size_type n,charT c)

Wijst een argument van n van dezelfde tekens toe aan de hoofdtekenreeks, waarbij alle aanwezige inhoud wordt vervangen.

string strKol=snaar('Ik houd van je');
strCol=strKol.toewijzen(4, 'En');
kosten<<strCol<< 'N';

Uitgang: eeee

basis_string&toewijzen(constbasis_string&P,size_type pos,
size_type n=npos)

Wijst n tekens van een tekenreeksobjectargument, beginnend bij pos, toe aan de hoofdtekenreeks, waarbij alle aanwezige inhoud wordt vervangen.

string strKol=snaar('Ik houd van je');
strCol=strKol.toewijzen('Ze heeft me nodig', 4, 5);
kosten<<strCol<< 'N';

Uitgang: behoeften. Zou een uitzondering gooien - zie later.

invoegen

basis_string&invoegen(size_type pos, constbasis_string&P)

Voegt het string-objectargument in aan de hoofdstring, bij index, pos.

tekenreeks strKol1=snaar('Ik houd van je');
tekenreeks strCol2=snaar('haat en');
strKol1=strKol1.invoegen(2,strCol2);
kosten<<strKol1<< 'N';

Uitgang: ik haat en hou van je. Zou een uitzondering gooien - zie later.

basis_string&invoegen(size_type pos1, constbasis_string&
P,size_type pos2,size_type n=npos)

Voegt een lengte van n tekens in vanaf pos2 van het tekenreeksobjectargument, tot de hoofdtekenreeks, bij index, pos1.

tekenreeks strKol1=snaar('Ik houd van je');
tekenreeks strCol2=snaar('haat, willen en nodig hebben');
strKol1=strKol1.invoegen(2,strCol2, 6, 9);
kosten<<strKol1<< 'N';

Uitgang: ik wil en hou van je.

iterator invoegen (const_iterator p, charT c)

Voegt een bepaald teken in, dat een argument is, in de positie waarnaar de iterator verwijst. Retourneert een iterator voor de positie van het nieuw ingevoegde teken.

string strKol=snaar('Ik houd van je');
basis_string<char> ::iteratoriter=strKol.beginnen();
++iter; ++iter; ++iter; ++iter; ++iter; ++iter;
basis_string<char> ::iteratornetwerk=strKol.invoegen(iter, 'NS');
kosten<< *netwerk<< 'N';
kosten<<strCol<< 'N';

De uitvoer is:

'NS'

ik hield van je

iterator insert (const_iterator p, size_type n, charT c)

Voegt n van hetzelfde karakter van het argument in op de positie waarnaar de iterator verwijst. Retourneert een iterator voor de positie van het begin van de nieuw ingevoegde zelfde tekens.

string strKol=snaar('Tab in het land.');
basis_string<char> ::iteratoriter=strKol.beginnen();
++iter; ++iter; ++iter;
basis_string<char> ::iteratornetwerk=strKol.invoegen(iter, 2, 'of');
kosten<< *netwerk<< 'N';
kosten<<strCol<< 'N';

De uitvoer is:

'of'

Taboe in het land.

basis_string&invoegen(size_type pos, constgrafiek*s)

Voegt een letterlijke argumentstring in bij de index, pos in de hoofdstring.

string strKol=snaar('Tab in het land.');
strCol=strKol.invoegen(3, 'oe');
kosten<<strCol<< 'N';

Uitvoer: taboe in het land.

basis_string&invoegen(size_type pos, constgrafiek*s,size_type n)

Voegt de eerste n karakters van de argumentstring letterlijk in, bij de index, pos in de hoofdstring.

string strKol=snaar('Tab in het land.');
strCol=strKol.invoegen(3, 'oooo', 2);
kosten<<strCol<< 'N';

Uitvoer: taboe in het land.

vervangen

basis_string&vervangen(size_type pos1,size_type n1, constbasis_string&P))

Vervangt n1 tekens in het hoofdtekenreeksobject van index, pos1, door het argument tekenreeksobject.

tekenreeks strKol1=snaar('Ik houd van je');
tekenreeks strCol2=snaar('haat je en');
strKol1=strKol1.vervangen(2, 4,strCol2);
kosten<<strKol1<< 'N';

Uitgang: ik haat jou en jou. Zou een uitzondering gooien - zie later.

basis_string&vervangen(size_type pos1,size_type n1, constbasis_string&
P,size_type pos2,size_type n2=npos)

Vervangt n1 tekens in het hoofdtekenreeksobject van de index, pos1, door n2 tekens van het argumenttekenreeksobject uit de index, pos2.

tekenreeks strKol1=snaar('Ik houd van je');
tekenreeks strCol2=snaar('we haten hem en haar');
strKol1=strKol1.vervangen(2, 4,strCol2, 3, 12);
kosten<<strKol1<< 'N';

Uitgang: ik haat hem en jou.

basis_string&vervangen(size_type pos1,size_type n1, constgrafiek*s,
size_type n2)

Vervangt n1-tekens in het hoofdtekenreeksobject uit de index, pos1, door de eerste n2-tekens van het letterlijke tekenreeksargument.

tekenreeks strKol1=snaar('Ik houd van je');
strKol1=strKol1.vervangen(2, 4, 'haat hem en haar', 12);
kosten<<strKol1<< 'N';

Uitgang: ik haat hem en jou.

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

Vervangt n tekens in het hoofdtekenreeksobject van index, pos, door het letterlijke tekenreeksargument.

tekenreeks strKol1=snaar('Ik houd van je');
strKol1=strKol1.vervangen(2, 4, 'haat hem en');
kosten<<strKol1<< 'N';

Uitgang: ik haat hem en jou.

basis_string&vervangen(size_type pos1,size_type n1,size_type n2,charT c)

Vervangt n1 tekens in het hoofdtekenreeksobject van de index, pos1, door n2 van hetzelfde teken van het argument.

tekenreeks strKol1=snaar('Een slechte tablet daar.');
strKol1=strKol1.vervangen(9, 3, 2, 'of');
kosten<<strKol1<< 'N';

Output: Een slecht taboe daar..

iterator wissen (const_iterator p)

Verwijdert een teken op de positie waarnaar de iterator verwijst; geeft vervolgens de iteratorpositie terug, die nu wordt ingenomen door het teken dat naast dit teken stond (of end()). De volgende code illustreert dit:

string strKol=snaar('abcd');
basis_string<char> ::iteratoriter=strKol.beginnen();
++iter; ++iter;
strKol.wissen(iter);
kosten<<strCol[0] << '' <<strCol[1] << '
'
<<strCol[2]<< 'N';

De output: a b d

basis_string&wissen(size_type pos= 0,size_type n=npos)

Verwijdert n tekens uit de index, pos.

string strKol=snaar('abcd');
strKol.wissen(1, 2);
kosten<<strCol[0] << '' <<strCol[1] << 'N';

Uitgang: een d

void push_back (charT c)

Om een ​​enkel teken aan het einde van de tekenreeks toe te voegen:

string strKol=snaar('abcd');
strKol.terugduwen('5');
kosten<<strCol<< 'N';

Uitgang: abcd5

ongeldig pop_back()

Verwijdert het laatste teken zonder het terug te geven. De grootte van de string wordt met 1 verminderd.

string strKol=snaar('abcde');
strKol.pop_back();
kosten<<strCol<< 'N';

Uitgang: abcd

void swap (basic_string & s)

De letterlijke waarden van twee tekenreeksobjecten kunnen worden verwisseld.

tekenreeks strKol1=snaar(<hulp='post-69618-__DdeLink__781_3724385525'>tot>'abcde');
tekenreeks strCol2=snaar('1234567');
strKol1.ruil(strCol2);
kosten<<strKol1<< 'N';
kosten<<strCol2<< 'N';

De uitvoer is:

'1234567'
'abcde'

Stringbewerkingen

const charT* c_str() const nobehalve

Retourneert een aanwijzer naar het eerste element van de tekenreeks. De aanwijzer kan worden verhoogd.

conststring strKol=snaar('abcde');
const char*P=strKol.c_str();
kosten<< *P<< 'N';
++P;
kosten<< *P<< 'N';

Uitgang is:

tot
B

Vanwege de tweede const in de kop, kan het programma geen enkel teken in de string wijzigen. De constructie wordt voorafgegaan door const.

const charT* data() const nobehalve

Retourneert een aanwijzer naar het eerste element van de tekenreeks. De aanwijzer kan worden verhoogd.

conststring strKol=snaar('abcde');
const char*P=strKol.gegevens();
kosten<< *P<< 'N';
++P;
kosten<< *P<< 'N';

Uitgang is:

tot
B

Vanwege de tweede const in de kop, kan het programma geen enkel teken in de string wijzigen. De constructie wordt voorafgegaan door const.

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

Retourneert een tekenreeksobject van n tekens voor de subtekenreeks die begint bij de index, pos.

conststring strKol=snaar('abcdefghij');
conststring retStr=strKol.substr(2, 4);
kosten<<retStr<< 'N';

Uitgang: cdef

find() Ledenfuncties

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

Zoekt naar een subtekenreeksobject beginnend bij de index, pos. Indien gevonden, wordt het begin van de subtekenreeks in de hoofdtekenreeks geretourneerd.

string strKol=snaar('Wij zijn de wereld!');
tekenreeks strKol1=snaar('de');
intop een=strKol.vind(strKol1, 2);
kosten<<op een<< 'N';

Uitgang:

index: 7
Retourneert -1, indien niet gevonden.

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

Zoekt naar een letterlijke subtekenreeks die begint bij de index, pos. Indien gevonden, wordt het begin van de subtekenreeks in de hoofdtekenreeks geretourneerd.

string strKol=snaar('Wij zijn de wereld!');
intop een=strKol.vind('zijn', 0);
kosten<<op een<< 'N';

Aangezien pos = 0 de standaardwaarde is, had 0 in het argument kunnen worden weggelaten.

Uitgang: 3

Retourneert -1, indien niet gevonden.

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

Zoekt naar de eerste n tekens van een letterlijke subtekenreeks die begint bij de index, pos. Indien gevonden, wordt het begin van de subtekenreeks in de hoofdtekenreeks geretourneerd.

string strKol=snaar('De grootste jongen');
intop een=strKol.vind('groter', 1, 3);
kosten<<op een<< 'N';

Uitgang: 4

Retourneert -1, indien niet gevonden.

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

Zoekt naar het teken, c beginnend bij de index, pos. Indien gevonden, wordt het begin van de subtekenreeks in de hoofdtekenreeks geretourneerd. Indien niet gevonden, wordt -1 geretourneerd.

string strKol=snaar('Wij zijn de wereld!');
intop een=strKol.vind('Met');
kosten<<op een<< 'N';

Uitgang: -1

De volgende reverse find()-lidfuncties bestaan:

size_type rfind(constbasis_string&P,size_type pos=npos) constnee behalve;
size_type rfind(constgrafiek*s,size_type pos=npos) const;
size_type rfind(constgrafiek*s,size_type pos,size_type n) const;
size_type rfind(charT c,size_type pos=npos) const;

Vergelijking Ledenfuncties

int vergelijk(const basic_string& str) const nobehalve

Vergelijkt het argument string-object met het hoofd string-object. Als de hoofdreeks vóór het argument (in het woordenboek) voorkomt, wordt een positief getal geretourneerd. Als het na de hoofdreeks voorkomt, retourneert het een negatief getal. Als de twee tekenreeksen hetzelfde zijn, wordt nul geretourneerd.

tekenreeks strKol1=snaar('menigte');
tekenreeks strCol2=snaar('mensen');
intop een=strKol1.vergelijken(strCol2);
kosten<<op een<< 'N';

Uitgang: -13

int vergelijk(const charT* s) const

Hetzelfde als hierboven, maar het argument is een letterlijke tekenreeks.

tekenreeks strKol1=snaar('mensen');
intop een=strKol1.vergelijken('mensen');
kosten<<op een<< 'N';

Uitgang: 0

String-operators

Deze operators zijn van toepassing op tekenreeksobjecten en niet noodzakelijkerwijs op tekenreeksen.

+

Voegt twee tekenreeksobjecten samen en retourneert de aaneenschakeling.

tekenreeks strKol1=snaar('dansen');
tekenreeks strCol2=snaar(' de maan');
string strKol=strKol1+strCol2;
kosten<<strCol<< 'N';

Uitgang: dansen op de maan.

==

Retourneert 1 voor waar, als de tekenreeksobjecten hetzelfde zijn; en nul voor false, als dat niet het geval is.

tekenreeks strKol1=snaar('dansen');
tekenreeks strCol2=snaar(' op de maan');
bool blauw=strKol1==strCol2;
kosten<<blauw<< 'N';

Uitgang: 0

! =

Retourneert 1 als de tekenreeksobjecten niet hetzelfde zijn, en nul als dat wel het geval is.

tekenreeks strKol1=snaar('dansen');
tekenreeks strCol2=snaar(' op de maan');
bool blauw=strKol1! =strCol2;
kosten<<blauw<< 'N';

Uitgang: 1

<

Retourneert 1, als de linker operand kleiner is dan de rechter operand volgens het woordenboek, of nul als dit niet het geval is.

tekenreeks strKol1=snaar('dansen');
tekenreeks strCol2=snaar(' op de maan');
bool blauw=strKol1<strCol2;
kosten<<blauw<< 'N';

Uitgang: 0

Voor gewone tekens in C++, in oplopende volgorde, komen cijfers voor hoofdletters, die voor kleine letters komen. Het spatieteken komt voor nul en allemaal.

C++ Hoofdtekenreekstypes

char

Het char-type is het originele C++-type en zou een teken doorgaans in 8 bits opslaan.

char16_t

Hiermee wordt een teken in 16 bits opgeslagen.

char32_t

Hiermee wordt een teken in 32 bits opgeslagen.

wchar_t

char16_t en char32_t zijn brede karakters. wchar_t is een breed karakter dat eigendom is en door de implementatie is gedefinieerd.

Deze typen worden eigenschappen genoemd. C ++ verwijst er echter technisch naar als specialisaties van eigenschappen. Dit artikel heeft zich gericht op het char-type. De benadering van de andere typen is iets anders - zie later.

Andere functies voor stringbewerkingen

De handtekeningen van andere stringbewerkingsfuncties zijn:

size_type find_first_of(constbasis_string&P,size_type pos= 0) constnee behalve;
size_type find_first_of(constgrafiek*s,size_type pos,size_type n) const;
size_type find_first_of(constgrafiek*s,size_type pos= 0) const;
size_type find_first_of(charT c,size_type pos= 0) const;
size_type find_last_of(constbasis_string&P,size_type pos=npos) constnee behalve;
size_type find_last_of(constgrafiek*s,size_type pos,size_type n) const;
size_type find_last_of(constgrafiek*s,size_type pos=npos) const;
size_type find_last_of(charT c,size_type pos=npos) const;
size_type find_first_not_of(constbasis_string&P,size_type pos= 0) constnee behalve;
size_type find_first_not_of(constgrafiek*s,size_type pos,size_type n) const;
size_type find_first_not_of(constgrafiek*s,size_type pos= 0) const;
size_type find_first_not_of(charT c,size_type pos= 0) const;
size_type find_last_not_of(constbasis_string&P,size_type pos=npos) constnee behalve;
size_type find_last_not_of(constgrafiek*s,size_type pos,size_type n) const;
size_type find_last_not_of(constgrafiek*s,size_type pos=npos) const;
size_type find_last_not_of(charT c,size_type pos=npos) const;

Conclusie

C++ heeft letterlijke tekenreeksen en tekenreeksobjecten. Het string-object heeft een verzameling tekens in volgorde, vergelijkbaar met een reeks tekens in volgorde. Het verschil tussen de stringverzameling en een array is dat de stringverzameling in lengte kan groeien of krimpen. Een stringobject wordt geïnstantieerd (geconstrueerd) vanuit een stringklasse. Een stringobject is een datastructuur met lidfuncties. De lidfuncties kunnen worden geclassificeerd onder de kopjes objectconstructie, elementtoegang, tekenreekscapaciteit, tekenreekslidfuncties met iteratorargumenten en retourtypen, en tekenreeksmodificatoren. Stringgelijkheid en relationele operatoren bestaan ​​ook.