A C ++ String Class használata

How Use C String Class



A karakterlánc literál egy karaktersorozat egy állandó tömbmutatóban, amelyet a nul karakter, 0 fejez be. Ha a változó azonosítja, a karakterlánc nem igazán csökkentheti vagy növelheti a hosszúságot. Sok műveletet nem lehet elvégezni a karakterláncon. Tehát szükség van egy string osztályra. A C ++ karakterláncosztály egy adatstruktúrához, egy sor karakterek gyűjteményéhez, amely lehetővé teszi a tagfüggvények és az operátorok számára a karakterekre gyakorolt ​​hatást. A karakterlánc -osztály több manipulációt tesz lehetővé a megfelelő karakterlánc -literálon, mint a karakterlánc -literál. A cikk megértéséhez jó ismeretekkel kell rendelkeznie a karakterláncokról.

Osztály és tárgyak

Az osztály a változók és függvények együttese, amelyek együtt dolgoznak; ahol a változókhoz nincs hozzárendelve érték. Ha értékeket rendelnek a változókhoz, az osztály objektummá válik. Az azonos osztálynak adott különböző értékek különböző objektumokat eredményeznek; vagyis a különböző objektumok ugyanaz az osztály, különböző értékekkel. Egy objektum osztályból való létrehozása azt jelenti, hogy az objektum példányosítása.







A név, karakterlánc egy osztály. A karakterlánc osztályból létrehozott objektumnak egy programozó által választott neve van.



Az osztályhoz tartozó függvényre van szükség ahhoz, hogy objektumot hozzon létre az osztályból. C ++ - ban ez a függvény ugyanazzal a névvel rendelkezik, mint az osztály neve. Az osztályból létrehozott (példányosított) objektumoknak különböző nevei vannak a programozó által.



Egy objektum osztályból való létrehozása az objektum felépítését jelenti; azonnali beavatkozást is jelent.





A karakterlánc osztályt használó C ++ program a következő sorokkal kezdődik a fájl tetején:

#befoglalni
#befoglalni
névtér standard használatával;

Az első sor a bemenet/kimenet. A második sor lehetővé teszi a program számára, hogy használja a karakterlánc osztály összes funkcióját. A harmadik sor lehetővé teszi a program számára, hogy a szabványos névtérben lévő neveket használja.



Egy funkció túlterhelése

Ha két vagy több különböző funkció -aláírás azonos névvel rendelkezik, akkor a név túlterhelt. Egy függvény meghívásakor az argumentumok száma és típusa határozza meg, hogy melyik függvény kerül végrehajtásra.

Építkezés

húr()
Az alábbi utasítás nulla hosszúságú karakterláncot állít össze karakter nélkül.

string strCol=húr();

Az osztály nevével kezdődik (objektumtípus), karakterlánc. Ezt követi az objektum karakterlánc neve, amelyet a programozó ad meg. A hozzárendelő operátor következik; akkor a konstruktor neve üres zárójelekkel. Itt az strCol a példányosított objektum az összes adattaggal (tulajdonsággal) és tagfüggvénnyel (metódussal).
karakterlánc (str)
Ez hasonló a fentiekhez, de a konstruktorban vagy karakterlánc literált, vagy azonosítót vesz fel argumentumként. Az alábbi állítás ezt szemlélteti:

string strCol=húr('Szeretlek');

Építés inicializáló listával

A következő kód ezt szemlélteti:

string strCol=húr({'ÉN','','az','vagy','v','És','','és','vagy','te',' 0'});

A szöveg szó szerint szeretlek. Jegyezze meg a nul karaktert az inicializáló lista végén.

karakterlánc (str, n)

Ez egy karakterlánc -gyűjteményt képez egy másik karakterlánc első n karakteréből. A következő kód ezt szemlélteti:

charo[] = 'Szeretlek';
string strCol=húr(o, 6);
költség<<strCol<< ' n';

A kimenet: Szeretlek a Szeretlek első 6 karakterével. Ne feledje: az egyetlen szóköz karakter.

karakterlánc (str, pos, n)

Ez n karakterből álló karakterlánc-gyűjteményt képez, egy másik karakterlánc nulla alapú indexelt pozíciójától kezdve. A következő kód ezt szemlélteti:

charo[] = 'Szeretlek';
string strCol=húr(o, 2, 4);
költség<<strCol<< ' n';

A kimenet: szerelem.

A fenti két esetben, ha n nagyobb, mint a karakterlánc mérete, akkor az out_of_range kivételt dobja - lásd később.

karakterlánc (n, „c”)

N karakterből álló gyűjteményt képez, ahol minden karakter azonos. Fontolgat,

string strCol=húr(5,'És');
költség<<strCol<< ' n';

A kimenet eeeee, 5 e.

Karakterlánc hozzárendelése

Mindkét karakterlánc deklarálása után a karakterlánc a következőképpen rendelhető hozzá:

string strCol1=húr('Szeretlek');
strCol2 karakterlánc;
strCol2=strCol1;
költség<<strCol2<< ' n';

A kimenet az, hogy szeretlek.

Építés Iterator segítségével

Az iterátor a szkennelés általános ábrázolását biztosítja a gyűjtemény értékein keresztül. Egy szintaxis egy karakterlánc létrehozásához iterátorral:

sablon<osztályú InputIterator>
alap_füzér(Az InputIterator elindul,InputIterator vége, constAllokátor&
nak nek=Allokátor());

Ez létrehoz egy karakterláncot a [kezdet, vége] tartományhoz - részleteket lásd később.

Egy húr megsemmisítése

A karakterlánc megsemmisítéséhez csak engedje ki a hatókörből.

String Class Element Access

Egy példányosított karakterlánc-objektum szkriptként (indexelve) tömbbé alakítható. Az indexszámlálás nulláról indul.

stringName [i]

A stringName [i] művelet hivatkozást ad vissza az i karakterre (elemre)tha karaktergyűjtemény indexe. A következő kódkimenetek v:

string strCol=húr('Szeretlek');
charch=strCol[4];
költség<<ch<< ' n';

stringName [i] const

A stringName [i] const műveletet a stringName [i] helyett hajtjuk végre, ha a string objektum állandó objektum. Például a következő kódban használják:

conststring strCol=húr('Szeretlek');
charch=strCol[4];
költség<<ch<< ' n';

A kifejezés állandó hivatkozást ad vissza az i -retha string objektum eleme. A karakterlánc egyik eleme sem változtatható meg.

Karakter hozzárendelése az indexhez

Egy karakter hozzárendelhető egy nem állandó karakterlánc objektumhoz az alábbiak szerint:

string strCol=húr('Hívok');
strCol[2] = 'f';
költség<<strCol<< ' n';

A kimenet I esés. A „c” „f” -re változott.

stringName.at (i)

A stringName.at (i) hasonló a stringName [i] -hez, de a stringName.at (i) megbízhatóbb. A következő kód megmutatja, hogyan kell használni:

string strCol=húr('Szeretlek');
charch=strCol.nál nél(4);
költség<<ch<< ' n';

Az at () valójában egy karakterlánc -tagfüggvény.

stringName.at (i) const

stringName.at (i) const hasonló a stringName [i] const -hoz, de a stringName.at (i) const megbízhatóbb. stringName.at (i) const végrehajtódik a stringName.at (i) helyett, ha a karakterlánc objektum állandó karakterlánc objektum. Például a következő kódban használják:

conststring strCol=húr('Szeretlek');
charch=strCol.nál nél(4);
költség<<ch<< ' n';

at () const valójában egy karakterlánc -tagfüggvény.

Érték hozzárendelése az at () függvénnyel

Egy érték nem rendelt karakterlánc objektumhoz rendelhető az at () függvénnyel az alábbiak szerint:

string strCol=húr('Hívok');
strCol.nál nél(2) = 'f';
költség<<strCol<< ' n';

A kimenet I esés.

Probléma az alszkripteléssel

Az al-szkripteléssel (indexeléssel) az a probléma, hogy ha az index a tartományon kívül van, akkor rossz eredmény érhető el, vagy hiba léphet fel futás közben.

elülső()

Ez egy hivatkozást ad vissza a karakterlánc objektum első elemére az elem eltávolítása nélkül. A következő kód kimenete „I”.

string strCol=húr('Szeretlek');
charch=strCol.elülső();
költség<<ch<< ' n';

A karakter nincs eltávolítva a karakterlánc objektumból.

front () const

Ha a karakterlánc objektum konstrukcióját a const előzi meg, akkor a front () const kifejezés kerül végrehajtásra a front () helyett. Például a következő kódban használják.

conststring strCol=húr('Szeretlek');
charch=strCol.elülső();
költség<<ch<< ' n';

Az állandó hivatkozás visszatér. Az elem nincs eltávolítva a karakterlánc objektumból. Egy konstans karakterlánc objektumban nem lehet karaktert megváltoztatni.

vissza()

Ez egy hivatkozást ad vissza a karakterlánc -objektum utolsó elemére az elem eltávolítása nélkül. A következő kód kimenete „u”.

string strCol=húr('Szeretlek');
charch=strCol.vissza();
költség<<ch<< ' n';

vissza () const

Ha a karakterlánc objektum konstrukcióját a const előzi meg, akkor a back () const kifejezés kerül végrehajtásra a back () helyett. Például a következő kódban használják.

conststring strCol=húr('Szeretlek');
charch=strCol.vissza();
költség<<ch<< ' n';

Az állandó hivatkozás visszatér. Az elem nincs eltávolítva a karakterlánc objektumból.

Karakterlánc kapacitás

size_type capacity () const noexcept

Ez a karakterlánc -függvény visszaadja a karakterlánc teljes karaktereinek számát az átcsoportosítás nélkül. Ennek kódszegmense a következő:

string strCol=húr();
intaz egyiken=strCol.kapacitás();
költség<<az egyiken<< ' n';

A kimenet 15 a számítógépemen.

tartalék (n)

A szabad tárolóban nem mindig áll rendelkezésre memóriaterület. További helyek előre foglalhatók. Tekintsük a következő kódrészletet:

string strCol=húr('szeretet');
strCol.lefoglal(6);
költség<<strCol.kapacitás() << ' n';

A kimenet 15 a számítógépemen.

size () const noexcept

Ez visszaadja a karakterlánc karaktereinek számát. A következő kód szemlélteti:

string strCol=húr('Szeretlek');
intaz egyiken=strCol.méret();
költség<<az egyiken<< ' n';

A kimenet 10, amely nem tartalmazza a nul, 0 karaktert.

length () const noexcept

-azonos a mérettel().
jegyzet:méret() <=kapacitás().

shrink_to_fit ()

Áthelyezéssel csökkentheti a kapacitást () méretre (); nem kötelező. A következő kód ezt bizonyítja:

string strCol=húr('Szeretlek');
strCol.lefoglal(12);
strCol.zsugorodni_illeszkedni();
intsz=strCol.méret();
költség<<sz<< ' n';

A kimenet 10 és nem 12 vagy 16. A függvény üreset ad vissza.

átméretezés (sz), átméretezés (sz, ’c’)

Ez átméretezi a karakterláncot. Ha az új méret kisebb, mint a régi, akkor a vége felé lévő elemek törlődnek. Ha az új méret hosszabb, akkor a vége felé valamilyen alapértelmezett karakter kerül hozzáadásra. Egy adott karakter hozzáadásához használja a resize () függvényt két argumentummal. A következő kódrészlet a két funkció használatát szemlélteti:

string strCol=húr('Szeretlek');
strCol.átméretezni(6);
költség<< 'A strCol új mérete:' <<strCol.méret() << ' n';
string strCol1=húr('Szeretem', 'És');
strCol1.átméretezni(12);
költség<< 'Az strCol1 új mérete:' <<strCol1.méret() << ' n';

A kimenet:

A strCol új mérete: 6
A strCol1 új mérete: 12
A függvény üreset ad vissza.

clear () noexcept

Eltávolítja az összes elemet a karakterláncból, amint azt a következő kódrészlet illusztrálja:

string strCol=húr('Szeretlek');
strCol.egyértelmű();
költség<<strCol.méret() << ' n';

A kimenet 0. A függvény üreset ad vissza.

empty () const noexcept

Ez 1 értéket ad vissza igaz értékre, ha nincs karakter a karakterlánc objektumban, vagy 0 értékre hamis értékre, ha a karakterlánc objektum nem üres. A következő kód ezt szemlélteti:

string strCol1=húr('Szeretlek');
költség<<strCol1.üres() << ' n';
strCol2 karakterlánc=húr();
költség<<strCol2.üres() << ' n';

A kimenet:

0
1

Visszatérő iterátorok és a String osztály

Az iterátor olyan, mint egy mutató, de több funkcióval rendelkezik, mint a mutató.

start () noexcept

Visszaad egy iterátort, amely a karakterlánc objektum első karakterére (elemére) mutat, a következő kódszegmensben:

string strCol=húr('Szeretlek');
alap_füzér<char> ::iterátoriter=strCol.kezdődik();
költség<< *iter<< ' n';

A kimenet „én”. Jegyezze meg az iterátort fogadó nyilatkozat deklarálásának módját. Az iterátornak egy visszatérési kifejezésben le kell hivatkoznia, hogy megkapja az értéket, ugyanúgy, mint a mutató hivatkozását.

begin () const noexcept;

Visszaad egy iterátort, amely a karakterlánc -objektumgyűjtemény első elemére mutat. Ha az objektum konstrukcióját a const előzi meg, akkor a begin () const kifejezés kerül végrehajtásra a begin () helyett. Ilyen feltételek mellett az objektum megfelelő eleme nem módosítható. Például a következő kódban használják.

conststring strCol=húr('Szeretlek');
alap_füzér<char> ::const_iteratoriter=strCol.kezdődik();
költség<< *iter<< ' n';

A kimenet „én”. Ne feledje, hogy a const_iterator ezúttal az iterátor helyett a visszaadott iterátor fogadására szolgál.

end () noexcept

Visszaad egy iterátort, amely közvetlenül a karakterlánc -objektum utolsó elemén túlmutat. Tekintsük a következő kódrészletet:

string strCol=húr('Szeretlek');
alap_füzér<char> ::iterátoriter=strCol.vége();
költség<< *iter<< ' n';

A kimenet null, ami nem semmi, mivel az utolsó elemen kívül nincs konkrét elem.

end () const noexcept

Visszaad egy iterátort, amely közvetlenül a karakterlánc -objektum utolsó elemén túlmutat. Ha a karakterlánc objektum konstrukcióját a const előzi meg, akkor az end () const kifejezés kerül végrehajtásra a end () helyett. Tekintsük a következő kódrészletet:

conststring strCol=húr('Szeretlek');
alap_füzér<char> ::const_iteratoriter=strCol.vége();
költség<< *iter<< ' n';

A kimenet nulla. Ne feledje, hogy a const_iterator ezúttal az iterátor helyett a visszaadott iterátor fogadására szolgál.

Fordított iteráció

Lehetséges, hogy van egy iterátor, amely a tényleges végétől az első elemig közvetlenül iterál:

rbegin () noexcept

Visszaad egy iterátort, amely a karakterlánc példányosított objektumának utolsó elemére mutat, például a következő kódszegmensben:

string strCol=húr('Szeretlek');
alap_füzér<char> ::reverse_iteratoriter=strCol.rbegin();
költség<< *iter<< ' n';

A kimenet „u”. Vegye figyelembe a fordított iterátort fogadó nyilatkozat deklarálásának módját. Az iterátornak egy visszatérési kifejezésben le kell hivatkoznia, hogy megkapja az értéket, ugyanúgy, mint a mutató hivatkozását.

rbegin () const noexcept;

Visszaad egy iterátort, amely a string objektum utolsó elemére mutat. Ha az objektum konstrukcióját a const előzi meg, akkor az rbegin () const kifejezést hajtja végre az rbegin () helyett. Ilyen feltételek mellett az objektum megfelelő eleme nem módosítható. A funkciót például a következő kódban használják.

conststring strCol=húr('Szeretlek');
alap_füzér<char> ::const_reverse_iteratoriter=strCol.rbegin();
költség<< *iter<< ' n';

A kimenet „u”. Ne feledje, hogy a const_reverse_iterator -t ezúttal a reverse_iterator helyett a visszaadott iterátor fogadására használtuk.

render () noexcept

Egy iterátort ad vissza, amely közvetlenül a karakterlánc -objektum első eleme előtt mutat. Tekintsük a következő kódrészletet:

string strCol=húr('Szeretlek');
alap_füzér<char> ::reverse_iteratoriter=strCol.teszi();
költség<< *iter<< ' n';

A kimenet null, ami nem semmi, mivel nincs konkrét elem közvetlenül az első elem előtt.

render () const noexcept

Egy iterátort ad vissza, amely közvetlenül a karakterlánc -objektum első eleme előtt mutat. Ha az objektum konstrukcióját a const előzi meg, akkor a rend () const kifejezés kerül végrehajtásra a rend () helyett. Tekintsük a következő kódrészletet:

conststring strCol=húr('Szeretlek');
alap_füzér<char> ::const_reverse_iteratoriter=strCol.teszi();
költség<< *iter<< ' n';

A kimenet nulla. Ne feledje, hogy a const_reverse_iterator -t ezúttal a reverse_iterator helyett a visszaadott iterátor fogadására használtuk.

Karakterlánc -módosítók

A karakterlánc objektumot módosító módosító iterátort is felvehet vagy visszaadhat.

Hozzáfűzés

alap_füzér&operátor+ =(constalap_füzér&o)

Hozzáfűzi a jobb oldali karakterlánc objektumot a bal oldali karakterlánc objektumhoz. Példa:

string strCol1=húr('Szeretem');
strCol2 karakterlánc=húr(' te');
strCol1+ =strCol2;
költség<<strCol1<< ' n';

A kimenet: szeretlek. Ne felejtse el, hogy az strCol1 += strCol2 ugyanaz, mint az strCol1 = strCol1 +strCol2.

basic_string & operator+= (const charT* s)

String literal -t fűz egy string objektumgyűjteményhez. Példa:

string strCol=húr('Szeretem');
strCol+ = ' te';
költség<<strCol<< ' n';

Kimenet: Szeretlek.

basic_string & operator+= (charT c)

Egyetlen karaktert fűz hozzá az objektum karakterláncához. Példa:

string strCol=húr('Szeretlek');
strCol+ = 'te';
költség<<strCol<< ' n';

Kimenet: Szeretlek.

basic_string & operator+= (inicializáló_lista)

Hozzáfűz egy inicializáló listát. Példa:

string strCol=húr('Szeretem');
strCol+ = {'','és','vagy','te',' 0'};
költség<<strCol<< ' n';

Kimenet: Szeretlek. Mindig jó, ha hozzáadjuk a nul, 0 karakter inicializáló lista végéhez.

basic_string & append (const basic_string & str)

Hozzáfűzi az argumentum karakterlánc objektumot a fő karakterlánc objektumhoz. Példa:

string strCol1=húr('Szeretem');
strCol2 karakterlánc=húr(' te');
strCol1.mellékel(strCol2);
költség<<strCol1<< ' n';

Kimenet: Szeretlek.

basic_string & append (const charT* s)

String literális argumentumot fűz a fő karakterlánchoz. Példa

string strCol=húr('Szeretem');
strCol=strCol.mellékel(' te');
költség<<strCol<< ' n';

Kimenet: Szeretlek.

basic_string & append (inicializáló_lista)

Hozzáfűzi az inicializáló listát, amely egy argumentum, a fő karakterlánchoz. Példa:

string strCol=húr('Szeretem');
strCol=strCol.mellékel({'','és','vagy','te',' 0'});
költség<<strCol<< ' n';

Kimenet: Szeretlek. Mindig jó hozzáadni a nulla, 0 karaktert az inicializáló lista végéhez.

basic_string & append (n_méret_típus, c karakter)

Hozzáfűzi az azonos karaktert. Példa:

string strCol=húr('fül');
strCol=strCol.mellékel(2, 'vagy');
költség<<strCol<< ' n';

Kimenet: tabu.

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

A karakterlánc első n elemét hozzáfűzi a fő karakterlánc objektumhoz. Példa:

string strCol=húr('Szeretem');
strCol=strCol.mellékel(' te is', 4);
költség<<strCol<< ' n';

A kimenet: Szeretlek. Ha n nagyobb, mint a literál hossza, akkor egy length_error kivételt dobunk.

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

N karaktert fűz az indexhez, pos a fő karakterlánchoz. Példa:

string strCol=húr('Szeretem');
strCol=strCol.mellékel('te vagy az', 2, 4);
költség<<strCol<< ' n';

Kimenet: Szeretlek. Kivételt is ide dobnának, lásd később.

Hozzárendelés

alap_füzér&hozzárendelni(constalap_füzér&o)

Hozzárendeli az argumentum karakterlánc objektumot a fő karakterlánchoz, és lecseréli az ott található tartalmat.

string strCol1=húr('Szeretlek');
strCol2 karakterlánc=húr('Szüksége van rám');
strCol1=strCol1.hozzárendelni(strCol2);
költség<<strCol1<< ' n';

Kimenet: Szüksége van rám.

alap_füzér&hozzárendelni(constdiagram*s)

Karakterlánc -literális argumentumot rendel a fő karakterlánchoz, és lecseréli az ott található tartalmat.

string strCol=húr('Szeretlek');
strCol=strCol.hozzárendelni('Szüksége van rám');
költség<<strCol<< ' n';

Kimenet: Szüksége van rám.

alap_füzér&hozzárendelni(inicializáló_lista<diagram>)

Egy inicializáló lista argumentumot rendel a fő karakterlánchoz,az ott található tartalmak cseréje.
[cc lang='c'megszökött='igaz'szélesség='780']
string strCol=húr('Szeretlek');
strCol=strCol.hozzárendelni({'S','h','És','','n','És','És','d','s','','én','És',' 0'});
költség<<strCol<< ' n';

Kimenet: Szüksége van rám. Jó, ha a karakterlista végén mindig hozzáadjuk a nul, 0 karaktersorozatot.

alap_füzér&hozzárendelni(constdiagram*s,méret_típus n)

A karakterlánc literális argumentumának első n karakterét hozzárendeli a fő karakterlánchoz, és lecseréli az ott található tartalmat.

string strCol=húr('Szeretlek');
strCol=strCol.hozzárendelni('Szüksége van rám', 9);
költség<<strCol<< ' n';

Kimenet: Szüksége van rá.

alap_füzér&hozzárendelni(méret_típus n,karakter c)

Az azonos karakterekből álló argumentumot rendeli a fő karakterlánchoz, és lecseréli az ott található tartalmat.

string strCol=húr('Szeretlek');
strCol=strCol.hozzárendelni(4, 'És');
költség<<strCol<< ' n';

Kimenet: eeee

alap_füzér&hozzárendelni(constalap_füzér&o,méret_típus poz,
méret_típus n=npos)

Egy karakterlánc objektum argumentum n karakterét rendeli hozzá a poszttól kezdve a fő karakterlánchoz, és lecseréli az ott található tartalmat.

string strCol=húr('Szeretlek');
strCol=strCol.hozzárendelni('Szüksége van rám', 4, 5);
költség<<strCol<< ' n';

Kimenet: szükségletek. Kivételt jelentene - lásd később.

Beillesztés

alap_füzér&betét(méret_típus poz, constalap_füzér&o)

Beszúrja a karakterlánc objektum argumentumot a fő karakterláncba, index, pos.

string strCol1=húr('Szeretlek');
strCol2 karakterlánc=húr('gyűlölet és');
strCol1=strCol1.betét(2,strCol2);
költség<<strCol1<< ' n';

Kimenet: Gyűlöllek és szeretlek. Kivételt jelentene - lásd később.

alap_füzér&betét(size_type pos1, constalap_füzér&
o,size_type pos2,méret_típus n=npos)

N karakter hosszúságot szúr be a karakterlánc objektum argumentum pos2 -ből a fő karakterláncba, index, pos1.

string strCol1=húr('Szeretlek');
strCol2 karakterlánc=húr('gyűlölni, akarni és szükség');
strCol1=strCol1.betét(2,strCol2, 6, 9);
költség<<strCol1<< ' n';

Kimenet: Szeretlek és szeretlek.

iterátor betét (const_iterator p, charT c)

Egy adott karaktert, amely érv, beszúr az iterátor által jelzett pozícióba. Visszaad egy iterátort az újonnan beszúrt karakter pozíciójához.

string strCol=húr('Szeretlek');
alap_füzér<char> ::iterátoriter=strCol.kezdődik();
++iter; ++iter; ++iter; ++iter; ++iter; ++iter;
alap_füzér<char> ::iterátorhálózat=strCol.betét(iter, 'd');
költség<< *hálózat<< ' n';
költség<<strCol<< ' n';

A kimenet:

„D”

szerettelek

iterátor betét (const_iterator p, size_type n, charT c)

Az argumentum azonos karakterű n szövegét illeszti be az iterátor által jelzett pozícióba. Visszaad egy iterátort az újonnan beszúrt azonos karakterek elejének pozíciójához.

string strCol=húr(- Fül a földön.);
alap_füzér<char> ::iterátoriter=strCol.kezdődik();
++iter; ++iter; ++iter;
alap_füzér<char> ::iterátorhálózat=strCol.betét(iter, 2, 'vagy');
költség<< *hálózat<< ' n';
költség<<strCol<< ' n';

A kimenet:

'vagy'

Tabu az országban.

alap_füzér&betét(méret_típus poz, constdiagram*s)

Érvényes argumentumláncot szúr be az indexbe, pos a fő karakterláncba.

string strCol=húr(- Fül a földön.);
strCol=strCol.betét(3, 'oo');
költség<<strCol<< ' n';

Kimenet: Tabu az országban.

alap_füzér&betét(méret_típus poz, constdiagram*s,méret_típus n)

A argumentum karakterlánc első n karakterét beszúrja a literálba, az index, pos közé a fő karakterláncba.

string strCol=húr(- Fül a földön.);
strCol=strCol.betét(3, 'oooo', 2);
költség<<strCol<< ' n';

Kimenet: Tabu az országban.

Csere

alap_füzér&cserélje ki(size_type pos1,méret_típus n1, constalap_füzér&o))

Lecseréli az n1 karaktert a fő karakterlánc objektumban az index, pos1, argumentum karakterlánc objektumra.

string strCol1=húr('Szeretlek');
strCol2 karakterlánc=húr('gyűlöllek és');
strCol1=strCol1.cserélje ki(2, 4,strCol2);
költség<<strCol1<< ' n';

Kimenet: Gyűlöllek téged és téged. Kivételt jelentene - lásd később.

alap_füzér&cserélje ki(size_type pos1,méret_típus n1, constalap_füzér&
o,size_type pos2,méret_típus n2=npos)

A fő karakterlánc objektumban lévő n1 karaktert lecseréli az indexről, a pos1, az argumentum karakterlánc objektum n2 karakterét az indexről, a pos2.

string strCol1=húr('Szeretlek');
strCol2 karakterlánc=húr('utáljuk őt és őt');
strCol1=strCol1.cserélje ki(2, 4,strCol2, 3, 12);
költség<<strCol1<< ' n';

Kimenet: utálom őt és téged.

alap_füzér&cserélje ki(size_type pos1,méret_típus n1, constdiagram*s,
méret_típus n2)

Lecseréli a fő karakterlánc objektumban lévő n1 karaktert az index posz1 -ből a literális argumentum első n2 karakterével.

string strCol1=húr('Szeretlek');
strCol1=strCol1.cserélje ki(2, 4, 'utálom őt és őt', 12);
költség<<strCol1<< ' n';

Kimenet: utálom őt és téged.

alapvető_string & csere (size_type pos, size_type n, const charT* s)

A fő karakterlánc -objektumban lévő n karaktert az index, pos helyettesíti a literal string argumentummal.

string strCol1=húr('Szeretlek');
strCol1=strCol1.cserélje ki(2, 4, 'utálom őt és');
költség<<strCol1<< ' n';

Kimenet: utálom őt és téged.

alap_füzér&cserélje ki(size_type pos1,méret_típus n1,méret_típus n2,karakter c)

Lecseréli az n1 karaktert a fő karakterlánc objektumban az index, pos1, az argumentum azonos karakterének n2 karakterével.

string strCol1=húr(- Ott rossz tablet.);
strCol1=strCol1.cserélje ki(9, 3, 2, 'vagy');
költség<<strCol1<< ' n';

Kimenet: Rossz tabu ...

iterátor törlés (const_iterator p)

Eltávolít egy karaktert az iterátor által jelzett pozícióból; majd visszaadja az iterátor pozíciót, amelyet most a karakter mellett lévő karakter (vagy vég ()) foglal el. A következő kód ezt szemlélteti:

string strCol=húr('abcd');
alap_füzér<char> ::iterátoriter=strCol.kezdődik();
++iter; ++iter;
strCol.törli(iter);
költség<<strCol[0] << '' <<strCol[1] << '
'
<<strCol[2]<< ' n';

A kimenet: a b d

alap_füzér&törli(méret_típus poz= 0,méret_típus n=npos)

Eltávolít n karaktert az indexből, pos.

string strCol=húr('abcd');
strCol.törli(1, 2);
költség<<strCol[0] << '' <<strCol[1] << ' n';

Kimenet: a d

void push_back (charT c)

Egy karakter hozzáadása a karakterlánc végéhez:

string strCol=húr('abcd');
strCol.visszavet(„5”);
költség<<strCol<< ' n';

Kimenet: abcd5

void pop_back ()

Eltávolítja az utolsó karaktert anélkül, hogy visszaadná. A karakterlánc mérete 1 -gyel csökken.

string strCol=húr('abcde');
strCol.pop_back();
költség<<strCol<< ' n';

Kimenet: abcd

void swap (alapvető_string & s)

Két karakterlánc objektum literálja felcserélhető.

string strCol1=húr(<egy azonosító='post-69618 -__ DdeLink__781_3724385525'>nak nek>'abcde');
strCol2 karakterlánc=húr('1234567');
strCol1.csere(strCol2);
költség<<strCol1<< ' n';
költség<<strCol2<< ' n';

A kimenet:

'1234567'
'abcde'

String műveletek

const charT* c_str () const noexcept

Mutatót ad vissza a karakterlánc első elemére. A mutató növelhető.

conststring strCol=húr('abcde');
const char*o=strCol.c_str();
költség<< *o<< ' n';
++o;
költség<< *o<< ' n';

A kimenet:

nak nek
b

A címsor második konstitása miatt a program nem módosíthatja a karakterlánc karaktereit. A konstrukciót a const előzi meg.

const charT* data () const noexcept

Mutatót ad vissza a karakterlánc első elemére. A mutató növelhető.

conststring strCol=húr('abcde');
const char*o=strCol.adat();
költség<< *o<< ' n';
++o;
költség<< *o<< ' n';

A kimenet:

nak nek
b

A címsor második konstitása miatt a program nem módosíthatja a karakterlánc karaktereit. A konstrukciót a const előzi meg.

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

Visszaad egy n karakterből álló karakterlánc objektumot az indexből kiinduló allánc számára, pos.

conststring strCol=húr('abcdefghij');
constkarakterlánc retStr=strCol.alstr(2, 4);
költség<<retStr<< ' n';

Kimenet: cdef

find () tagfüggvények

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

Az indexből kiinduló allánc objektumot keres, poz. Ha megtalálta, akkor visszaadja a fő karakterláncban szereplő allánc elejét.

string strCol=húr('Mi vagyunk a világ!');
string strCol1=húr('az');
intaz egyiken=strCol.megtalálja(strCol1, 2);
költség<<az egyiken<< ' n';

Kimenet:

index: 7
-1 értéket ad vissza, ha nem található.

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

Az indexből kiinduló sztring literált keres, pos. Ha megtalálta, akkor visszaadja a fő karakterláncban szereplő allánc elejét.

string strCol=húr('Mi vagyunk a világ!');
intaz egyiken=strCol.megtalálja('vannak', 0);
költség<<az egyiken<< ' n';

Mivel a pos = 0 az alapértelmezett, az argumentum 0 -ja kihagyható lett volna.

Kimenet: 3

-1 értéket ad vissza, ha nem található.

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

Az indexből kiinduló sztring literál első n karakterét keresi, pos. Ha megtalálta, akkor visszaadja a fő karakterláncban szereplő allánc elejét.

string strCol=húr('A legnagyobb fiú');
intaz egyiken=strCol.megtalálja('nagyobb', 1, 3);
költség<<az egyiken<< ' n';

Kimenet: 4

-1 értéket ad vissza, ha nem található.

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

Keresi a karaktert, c az indexből kiindulva, poz. Ha megtalálta, akkor visszaadja a fő karakterláncban szereplő allánc elejét. Ha nem található, akkor -1 értéket ad vissza.

string strCol=húr('Mi vagyunk a világ!');
intaz egyiken=strCol.megtalálja('Val vel');
költség<<az egyiken<< ' n';

Kimenet: -1

A következő fordított keresés () tagfüggvények léteznek:

size_type rfind(constalap_füzér&o,méret_típus poz=npos) constkivéve;
size_type rfind(constdiagram*s,méret_típus poz=npos) const;
size_type rfind(constdiagram*s,méret_típus poz,méret_típus n) const;
size_type rfind(karakter c,méret_típus poz=npos) const;

Összehasonlító tagfüggvények

int összehasonlítás (const basic_string & str) const noexcept

Összehasonlítja az argumentum karakterlánc objektumot a fő karakterlánc objektummal. Ha a fő karakterlánc az argumentum előtt fordul elő (a szótárban), akkor pozitív számot ad vissza. Ha a fő karakterlánc után fordul elő, akkor negatív számot ad vissza. Ha a két karakterlánc azonos, akkor nullát ad vissza.

string strCol1=húr('tömeg');
strCol2 karakterlánc=húr('emberek');
intaz egyiken=strCol1.összehasonlítani(strCol2);
költség<<az egyiken<< ' n';

Kimenet: -13

int összehasonlítás (const charT* s) const

Ugyanaz, mint fent, de az argumentum karakterlánc.

string strCol1=húr('emberek');
intaz egyiken=strCol1.összehasonlítani('emberek');
költség<<az egyiken<< ' n';

Kimenet: 0

String operátorok

Ezek az operátorok karakterlánc -objektumokra alkalmazhatók, és nem feltétlenül karakterlánc -literálokra.

+

Összekapcsol két sztring objektumot, és visszaadja az összefűzést.

string strCol1=húr('táncolni');
strCol2 karakterlánc=húr(' a Hold');
string strCol=strCol1+strCol2;
költség<<strCol<< ' n';

Kimenet: tánc a Holdon.

==

1 értéket ad vissza, ha a karakterlánc objektumok azonosak; és nulla hamis, ha nem.

string strCol1=húr('táncolni');
strCol2 karakterlánc=húr(' a Holdon');
bool bl=strCol1==strCol2;
költség<<bl<< ' n';

Kimenet: 0

! =

1 -et ad vissza, ha a karakterlánc -objektumok nem azonosak, és nullát, ha igen.

string strCol1=húr('táncolni');
strCol2 karakterlánc=húr(' a Holdon');
bool bl=strCol1! =strCol2;
költség<<bl<< ' n';

Kimenet: 1

<

Visszaadja az 1 értéket, ha a bal operandus kisebb, mint a jobboldali operandus a szótár szerint, vagy nullát, ha nem.

string strCol1=húr('táncolni');
strCol2 karakterlánc=húr(' a Holdon');
bool bl=strCol1<strCol2;
költség<<bl<< ' n';

Kimenet: 0

A C ++ rendes karakterek esetében növekvő sorrendben a számok a nagybetűk előtt állnak, a kisbetűk előtt. A szóköz karakter nulla elé kerül, és mindegyik.

C ++ fő karakterlánc -karaktertípusok

char

A char típus az eredeti C ++ típus, és általában 8 bitben tárolja a karaktert.

char16_t

Ez 16 karakterben tárolja a karaktert.

char32_t

Ez 32 bitben tárolja a karaktert.

wchar_t

char16_t és char32_t széles karakterek. A wchar_t egy széles karakter, amely saját tulajdonú és megvalósítás által meghatározott.

Ezeket a típusokat vonásoknak nevezik. A C ++ azonban technikailag a tulajdonságok specializációinak nevezi őket. Ez a cikk a char típusra összpontosított. A többi típus megközelítése kissé eltér - lásd később.

Egyéb karakterlánc -műveleti tagfüggvények

A többi karakterlánc -művelet aláírása:

size_type find_first_of(constalap_füzér&o,méret_típus poz= 0) constkivéve;
size_type find_first_of(constdiagram*s,méret_típus poz,méret_típus n) const;
size_type find_first_of(constdiagram*s,méret_típus poz= 0) const;
size_type find_first_of(karakter c,méret_típus poz= 0) const;
size_type find_last_of(constalap_füzér&o,méret_típus poz=npos) constkivéve;
size_type find_last_of(constdiagram*s,méret_típus poz,méret_típus n) const;
size_type find_last_of(constdiagram*s,méret_típus poz=npos) const;
size_type find_last_of(karakter c,méret_típus poz=npos) const;
size_type find_first_not_of(constalap_füzér&o,méret_típus poz= 0) constkivéve;
size_type find_first_not_of(constdiagram*s,méret_típus poz,méret_típus n) const;
size_type find_first_not_of(constdiagram*s,méret_típus poz= 0) const;
size_type find_first_not_of(karakter c,méret_típus poz= 0) const;
size_type find_last_not_of(constalap_füzér&o,méret_típus poz=npos) constkivéve;
size_type find_last_not_of(constdiagram*s,méret_típus poz,méret_típus n) const;
size_type find_last_not_of(constdiagram*s,méret_típus poz=npos) const;
size_type find_last_not_of(karakter c,méret_típus poz=npos) const;

Következtetés

A C ++ karakterlánc -literálokat és karakterlánc -objektumokat tartalmaz. A karakterlánc objektum sorrendben tartalmaz karakterek gyűjteményét, hasonlóan egy sor karakter tömbhöz. A különbség a karakterlánc -gyűjtemény és a tömb között az, hogy a karakterlánc -gyűjtemény hossza nőhet vagy csökkenhet. Egy karakterlánc objektum egy példányból (konstruált) származik egy sztringosztályból. A karakterlánc objektum egy adatstruktúra tagfüggvényekkel. A tagfüggvények az objektumszerkesztés, az elemhozzáférés, a karakterlánc -kapacitás, a karakterlánc -függvények iterátor argumentumokkal és visszatérési típusokkal, valamint a karakterlánc -módosítók címsorai alá sorolhatók. String egyenlőség és relációs operátorok is léteznek.