Kuinka käyttää C ++ -merkkiluokkaa

How Use C String Class

Merkkijonokirjain on merkkijono vakiotaulukon osoittimessa, joka päättyy nol -merkkiin 0. Kun merkkijono literaali tunnistetaan muuttujan avulla, se ei todellakaan voi vähentää tai lisätä pituutta. Monia toimintoja ei voi tehdä merkkijonolla. Jousiluokka on siis tarpeen. C ++ -merkkiluokka on tietorakenteelle, merkkijonolle, joka sallii jäsentoiminnot ja operaattorit toimia merkkien mukaan. Merkkijonoluokka sallii useampia manipulaatioita vastaavalla merkkijonokirjeellä kuin vain merkkijono. Sinulla on oltava hyvät tiedot merkkijonosta, jotta voit ymmärtää tämän artikkelin.



Luokka ja esineet

Luokka on joukko muuttujia ja toimintoja, jotka toimivat yhdessä; jossa muuttujille ei ole määritetty arvoja. Kun muuttujille on määritetty arvot, luokasta tulee objekti. Samalle luokalle annetut eri arvot johtavat eri objekteihin; eli eri objektit ovat sama luokka, jolla on erilaiset arvot. Objektin luominen luokasta sanotaan objektin havainnollistamiseksi.



Nimi, merkkijono, on luokka. Jono -luokasta luodulla objektilla on ohjelmoijan valitsema nimi.



Luokkaan kuuluva funktio tarvitaan objektin luontiin luokasta. C ++: ssa kyseisellä funktiolla on sama nimi kuin luokan nimellä. Luokasta luoduilla (näytteillä) olevilla objekteilla on eri nimet, jotka ohjelmoija on antanut heille.

Objektin luominen luokasta tarkoittaa objektin rakentamista; se tarkoittaa myös hetkellistämistä.



C ++ -ohjelma, joka käyttää merkkijonoluokkaa, alkaa seuraavilla riveillä tiedoston yläosassa:

#sisältää
#sisältää
käyttämällä nimiavaruuden std;

Ensimmäinen rivi on tulo/lähtö. Toinen rivi on antaa ohjelman käyttää kaikkia merkkijonoluokan ominaisuuksia. Kolmannella rivillä ohjelma voi käyttää nimiä normaalissa nimitilassa.

Toiminnon ylikuormitus

Kun kahdella tai useammalla eri funktion allekirjoituksella on sama nimi, sen sanotaan olevan ylikuormitettu. Kun yksi funktio kutsutaan, argumenttien määrä ja tyyppi määrittävät suoritettavan funktion.

Rakentaminen

merkkijono ()
Seuraava lause muodostaa nollapituisen merkkijonon ilman merkkiä.

merkkijono strCol=merkkijono();

Se alkaa luokan nimellä (objektityyppi), merkkijono. Tätä seuraa ohjelmoijan antama objektijonon nimi. Toimeksiantaja seuraa; sitten rakenteen nimi tyhjillä suluilla. Tässä strCol on luotu objekti, jossa on kaikki tietojäsenet (ominaisuudet) ja jäsenfunktiot (menetelmät).
merkkijono (str)
Tämä on samanlainen kuin edellä, mutta se käyttää joko merkkijonon kirjainta tai tunnistetta argumenttina konstruktorissa. Seuraava väite havainnollistaa tätä:

merkkijono strCol=merkkijono('Minä rakastan sinua');

Rakentaminen alustusluettelolla

Seuraava koodi havainnollistaa tätä:

merkkijono strCol=merkkijono({'Minä','','','tai','v','Ja','','ja','tai','sinä','' 0''});

Jonokirjain on Rakastan sinua. Huomaa nol -merkki alustusluettelon lopussa.

merkkijono (str, n)

Tämä muodostaa merkkijonokokoelman toisen merkkijonon ensimmäisestä n merkistä. Seuraava koodi havainnollistaa tätä:

hiiltyäs[] = 'Minä rakastan sinua';
merkkijono strCol=merkkijono(s, 6);
kustannus<<strCol<< '' n'';

Lopputulos on Rakastan Rakastan sinua kuusi ensimmäistä hahmoa. Muista: yksi välilyönti on merkki.

merkkijono (str, pos, n)

Tämä muodostaa merkkijonokokoelman n merkistä alkaen toisen merkkijonon nollapohjaisesta indeksoidusta sijainnista pos. Seuraava koodi havainnollistaa tätä:

hiiltyäs[] = 'Minä rakastan sinua';
merkkijono strCol=merkkijono(s, 2, 4);
kustannus<<strCol<< '' n'';

Tulos on, rakkaus.

Jos edellä mainituissa kahdessa tapauksessa n on suurempi kuin merkkijonon koko, poikkeus_alueen_ poikkeus heitetään - katso myöhemmin.

merkkijono (n, 'c')

Muodostaa n merkin kokoelman, jossa kaikki merkit ovat samat. Harkitse,

merkkijono strCol=merkkijono(5,'Ja');
kustannus<<strCol<< '' n'';

Tulos on, eeeee, 5 e.

Merkkijonon määrittäminen

Merkkijono voidaan määrittää seuraavasti, kun molemmat merkkijonot on ilmoitettu:

merkkijono strCol1=merkkijono('Minä rakastan sinua');
merkkijono strCol2;
strCol2=strCol1;
kustannus<<strCol2<< '' n'';

Tulos on, rakastan sinua.

Rakentaminen Iteratorilla

Iteraattori tarjoaa yleisen esityksen skannauksesta kokoelman arvojen kautta. Syntaksi jonon luomiseksi iteraattorilla on:

sapluuna<luokan InputIterator>
perus_merkkijono(InputIterator käynnistyy,InputIterator loppu, constJakaja&
kohteeseen=Jakaja());

Tämä muodostaa merkkijonon alueelle [alku, loppu] - katso lisätietoja myöhemmin.

Merkkijonon tuhoaminen

Jos haluat tuhota merkkijonon, anna sen mennä soveltamisalan ulkopuolelle.

String Class Element Access

Luotettava merkkijonoobjekti voidaan skriptoida (indeksoida) kuten taulukko. Indeksin laskenta alkaa nollasta.

stringName [i]

Toiminto stringName [i] palauttaa viittauksen i: n merkkiin (elementtiin)thmerkkikokoelman hakemisto. Seuraavat koodilähdöt v:

merkkijono strCol=merkkijono('Minä rakastan sinua');
hiiltyäch=strCol[4];
kustannus<<ch<< '' n'';

stringName [i] const

Toiminto stringName [i] const suoritetaan merkkijonon [i] sijaan, kun merkkijonoobjekti on vakio -objekti. Sitä käytetään esimerkiksi seuraavassa koodissa:

constmerkkijono strCol=merkkijono('Minä rakastan sinua');
hiiltyäch=strCol[4];
kustannus<<ch<< '' n'';

Lauseke palauttaa jatkuvan viittauksen i: henthmerkkijono -objektin elementti. Mitään merkkijonon elementeistä ei voi muuttaa.

Merkin määrittäminen alaindeksillä

Ei-vakio merkkijono-objektille voidaan määrittää merkki seuraavasti:

merkkijono strCol=merkkijono('Soitan');
strCol[2] = 'f';
kustannus<<strCol<< '' n'';

Tulos on I fall. 'C' muutettiin 'f': ksi.

stringName.at (i)

stringName.at (i) on samanlainen kuin stringName [i], mutta stringName.at (i) on luotettavampi. Seuraava koodi näyttää, miten sitä tulisi käyttää:

merkkijono strCol=merkkijono('Minä rakastan sinua');
hiiltyäch=strCol.klo(4);
kustannus<<ch<< '' n'';

at () on itse asiassa merkkijonoluokan jäsenfunktio.

stringName.at (i) const

stringName.at (i) const on samanlainen kuin stringName [i] const, mutta stringName.at (i) const on luotettavampi. stringName.at (i) const suoritetaan stringName.at (i) sijaan, kun merkkijonoobjekti on vakio merkkijonoobjekti. Sitä käytetään esimerkiksi seuraavassa koodissa:

constmerkkijono strCol=merkkijono('Minä rakastan sinua');
hiiltyäch=strCol.klo(4);
kustannus<<ch<< '' n'';

at () const on oikeastaan ​​merkkijonoluokan jäsenfunktio.

Arvon määrittäminen at () -funktiolla

Arvo voidaan määrittää ei-vakio-merkkijonoobjektille at () -funktiolla seuraavasti:

merkkijono strCol=merkkijono('Soitan');
strCol.klo(2) = 'f';
kustannus<<strCol<< '' n'';

Tulos on I fall.

Ongelma alikomentosarjoissa

Alikomentosarjojen (indeksoinnin) ongelma on se, että jos indeksi on alueen ulkopuolella, voidaan saada väärä tulos tai virhe voidaan antaa ajon aikana.

edestä ()

Tämä palauttaa viittauksen merkkijono -objektin ensimmäiseen elementtiin poistamatta elementtiä. Seuraavan koodin tulos on 'I'.

merkkijono strCol=merkkijono('Minä rakastan sinua');
hiiltyäch=strCol.edessä();
kustannus<<ch<< '' n'';

Merkkiä ei poisteta merkkijonoobjektista.

edessä () const

Kun merkkijonoobjektin rakennetta edeltää const, lauseke front () const suoritetaan front (): n sijasta. Sitä käytetään esimerkiksi seuraavassa koodissa.

constmerkkijono strCol=merkkijono('Minä rakastan sinua');
hiiltyäch=strCol.edessä();
kustannus<<ch<< '' n'';

Jatkuva viite palautetaan. Elementtiä ei poisteta merkkijonoobjektista. Jatkuvan merkkijonobjektin merkkiä ei voi muuttaa.

takaisin()

Tämä palauttaa viittauksen merkkijono -objektin viimeiseen elementtiin poistamatta elementtiä. Seuraavan koodin tulos on u.

merkkijono strCol=merkkijono('Minä rakastan sinua');
hiiltyäch=strCol.takaisin();
kustannus<<ch<< '' n'';

takaisin () const

Kun merkkijonoobjektin rakennetta edeltää const, lauseke back () const suoritetaan back (): n sijasta. Sitä käytetään esimerkiksi seuraavassa koodissa.

constmerkkijono strCol=merkkijono('Minä rakastan sinua');
hiiltyäch=strCol.takaisin();
kustannus<<ch<< '' n'';

Jatkuva viite palautetaan. Elementtiä ei poisteta merkkijonoobjektista.

Merkkijonon kapasiteetti

size_type capacity () const noexcept

Tämä kapasiteettifunktio palauttaa merkkien kokonaismäärän, jonka merkkijono voi sisältää ilman uudelleenkohdistusta. Koodisegmentti tälle on:

merkkijono strCol=merkkijono();
intyhdellä=strCol.kapasiteettia();
kustannus<<yhdellä<< '' n'';

Tulos on 15 tietokoneessani.

varaus (n)

Muistitilaa ei aina ole saatavilla ilmaisessa myymälässä. Lisätilaa voi varata etukäteen. Harkitse seuraavaa koodisegmenttiä:

merkkijono strCol=merkkijono('rakkaus');
strCol.varata(6);
kustannus<<strCol.kapasiteettia() << '' n'';

Tulos on 15 tietokoneessani.

size () const noexcept

Tämä palauttaa merkkijonon merkkien määrän. Seuraava koodi havainnollistaa:

merkkijono strCol=merkkijono('Minä rakastan sinua');
intyhdellä=strCol.koko();
kustannus<<yhdellä<< '' n'';

Tulos on 10, joka ei sisällä merkkiä nul, 0.

length () const noexcept

-sama kuin koko().
Huomautus:koko() <=kapasiteettia().

kutistetaan sopivaksi()

Voi pienentää kapasiteettia () kokoon () aiheuttamalla uudelleenjakoa; se ei ole pakollista. Seuraava koodi osoittaa tämän:

merkkijono strCol=merkkijono('Minä rakastan sinua');
strCol.varata(12);
strCol.kutistetaan sopivaksi();
ints=strCol.koko();
kustannus<<s<< '' n'';

Lähtö on 10 eikä 12 tai 16. Toiminto palauttaa mitätön.

muuttaa kokoa (sz), muuttaa kokoa (sz, ’c’)

Tämä muuttaa merkkijonon kokoa. Jos uusi koko on pienempi kuin vanha koko, elementit loppua kohti poistetaan. Jos uusi koko on pidempi, loppuun lisätään jokin oletusmerkki. Jos haluat lisätä tietyn merkin, käytä resize () -funktiota kahdella argumentilla. Seuraava koodisegmentti kuvaa näiden kahden toiminnon käyttöä:

merkkijono strCol=merkkijono('Minä rakastan sinua');
strCol.muuttaa kokoa(6);
kustannus<< 'StrColin uusi koko:' <<strCol.koko() << '' n'';
merkkijono strCol1=merkkijono('Rakastan', 'Ja');
strCol1.muuttaa kokoa(12);
kustannus<< 'StrCol1: n uusi koko:' <<strCol1.koko() << '' n'';

Lähtö on:

StrColin uusi koko: 6
StrCol1: 12: n uusi koko
Funktio palauttaa mitätön.

clear () ei

Poistaa kaikki elementit merkkijonosta, kuten seuraava koodisegmentti havainnollistaa:

merkkijono strCol=merkkijono('Minä rakastan sinua');
strCol.asia selvä();
kustannus<<strCol.koko() << '' n'';

Tulos on 0. Toiminto palauttaa tyhjän.

empty () const noexcept

Tämä palauttaa arvon 1 tosi, jos merkkijonoobjektissa ei ole merkkiä, tai 0, jos epätosi, jos merkkijonoobjekti ei ole tyhjä. Seuraava koodi havainnollistaa tätä:

merkkijono strCol1=merkkijono('Minä rakastan sinua');
kustannus<<strCol1.tyhjä() << '' n'';
merkkijono strCol2=merkkijono();
kustannus<<strCol2.tyhjä() << '' n'';

Lähtö on:

0
1

Iteraattoreiden ja merkkijonoluokan palauttaminen

Iteraattori on kuin osoitin, mutta sillä on enemmän toimintoja kuin osoitin.

begin () noexcept

Palauttaa iteraattorin, joka osoittaa merkkijonoobjektin ensimmäiseen merkkiin (elementtiin), kuten seuraavassa koodisegmentissä:

merkkijono strCol=merkkijono('Minä rakastan sinua');
perus_merkkijono<hiiltyä> ::iteraattoriiter=strCol.alkaa();
kustannus<< *iter<< '' n'';

Tulos on 'minä'. Huomaa tapa, jolla iteraattorin vastaanottava ilmoitus on ilmoitettu. Iteraattori poistetaan palautuslausekkeessa arvon saamiseksi samalla tavalla kuin osoittimen poistaminen.

begin () const noexcept;

Palauttaa iteraattorin, joka osoittaa merkkijonoobjektikokoelman ensimmäiseen elementtiin. Kun objektirakennetta edeltää const, lauseke begin () const suoritetaan begin () sijasta. Tässä tilanteessa objektin vastaavaa elementtiä ei voi muuttaa. Sitä käytetään esimerkiksi seuraavassa koodissa.

constmerkkijono strCol=merkkijono('Minä rakastan sinua');
perus_merkkijono<hiiltyä> ::const_iteratoriter=strCol.alkaa();
kustannus<< *iter<< '' n'';

Tulos on 'minä'. Huomaa, että const_iterator on tällä kertaa käytetty vain iteraattorin sijasta palautetun iteraattorin vastaanottamiseen.

end () noexcept

Palauttaa iteraattorin, joka osoittaa heti merkkijono -objektin viimeisen elementin ulkopuolelle. Harkitse seuraavaa koodisegmenttiä:

merkkijono strCol=merkkijono('Minä rakastan sinua');
perus_merkkijono<hiiltyä> ::iteraattoriiter=strCol.loppuun();
kustannus<< *iter<< '' n'';

Tulos on nolla, mikä ei ole mitään, koska viimeisen elementin ulkopuolella ei ole konkreettista elementtiä.

end () const noexcept

Palauttaa iteraattorin, joka osoittaa heti merkkijono -objektin viimeisen elementin ulkopuolelle. Kun merkkijonoobjektin rakennetta edeltää const, lauseke end () const suoritetaan end (): n sijasta. Harkitse seuraavaa koodisegmenttiä:

constmerkkijono strCol=merkkijono('Minä rakastan sinua');
perus_merkkijono<hiiltyä> ::const_iteratoriter=strCol.loppuun();
kustannus<< *iter<< '' n'';

Lähtö on nolla. Huomaa, että const_iterator on tällä kertaa käytetty vain iteraattorin sijasta palautetun iteraattorin vastaanottamiseen.

Käänteinen iterointi

On mahdollista saada iteraattori, joka iteroi todellisesta lopusta juuri ennen ensimmäistä elementtiä:

rbegin () ei paitsi

Palauttaa iteraattorin, joka osoittaa merkkijonon luotavan objektin viimeiseen elementtiin, kuten seuraavassa koodisegmentissä:

merkkijono strCol=merkkijono('Minä rakastan sinua');
perus_merkkijono<hiiltyä> ::reverse_iteratoriter=strCol.rbegin();
kustannus<< *iter<< '' n'';

Tulos on 'u'. Huomaa, miten käänteisen iteraattorin vastaanottava ilmoitus on ilmoitettu. Iteraattori poistetaan palautuslausekkeessa arvon saamiseksi samalla tavalla kuin osoittimen poistaminen.

rbegin () const noexcept;

Palauttaa iteraattorin, joka osoittaa merkkijono -objektin viimeiseen elementtiin. Kun objektirakennetta edeltää const, lauseke rbegin () const suoritetaan rbegin (): n sijasta. Tässä tilanteessa objektin vastaavaa elementtiä ei voi muuttaa. Ominaisuutta käytetään esimerkiksi seuraavassa koodissa.

constmerkkijono strCol=merkkijono('Minä rakastan sinua');
perus_merkkijono<hiiltyä> ::const_reverse_iteratoriter=strCol.rbegin();
kustannus<< *iter<< '' n'';

Tulos on 'u'. Huomaa, että const_reverse_iterator on tällä kertaa käytetty palautetun iteraattorin sijasta vain reverse_iterator.

render () noexcept

Palauttaa iteraattorin, joka osoittaa juuri ennen merkkijonoobjektin ensimmäistä elementtiä. Harkitse seuraavaa koodisegmenttiä:

merkkijono strCol=merkkijono('Minä rakastan sinua');
perus_merkkijono<hiiltyä> ::reverse_iteratoriter=strCol.tekee();
kustannus<< *iter<< '' n'';

Tulos on nolla, mikä ei ole mitään, koska juuri ennen ensimmäistä elementtiä ei ole konkreettista elementtiä.

render () const noexcept

Palauttaa iteraattorin, joka osoittaa juuri ennen merkkijonoobjektin ensimmäistä elementtiä. Kun objektirakennetta edeltää const, lauseke rend () const suoritetaan rend (): n sijaan. Harkitse seuraavaa koodisegmenttiä:

constmerkkijono strCol=merkkijono('Minä rakastan sinua');
perus_merkkijono<hiiltyä> ::const_reverse_iteratoriter=strCol.tekee();
kustannus<< *iter<< '' n'';

Lähtö on nolla. Huomaa, että const_reverse_iterator on tällä kertaa käytetty palautetun iteraattorin sijasta vain reverse_iterator.

Merkkijonon muokkaajat

Muunnin, joka muokkaa merkkijonoobjektia, voi myös ottaa tai palauttaa iteraattorin.

Lisätään

perus_merkkijono&operaattori+ =(constperus_merkkijono&s)

Liittää oikean merkkijonoobjektin vasempaan merkkijonoobjektiin. Esimerkki:

merkkijono strCol1=merkkijono('Rakastan');
merkkijono strCol2=merkkijono(' sinä');
strCol1+ =strCol2;
kustannus<<strCol1<< '' n'';

Tulos on Rakastan sinua. Älä unohda, että strCol1 += strCol2 on sama kuin strCol1 = strCol1 +strCol2.

perus_merkkijono & operaattori+= (const charT* s)

Liittää merkkijono literaalin merkkijonoobjektikokoelmaan. Esimerkki:

merkkijono strCol=merkkijono('Rakastan');
strCol+ = ' sinä';
kustannus<<strCol<< '' n'';

Tulos: Rakastan sinua.

perus_merkkijono & operaattori+= (charT c)

Liittää yhden merkin objektijonoon. Esimerkki:

merkkijono strCol=merkkijono('Rakastan sinua');
strCol+ = 'sinä';
kustannus<<strCol<< '' n'';

Tulos: Rakastan sinua.

perus_merkkijono ja operaattori+= (alustuslista)

Liittää alustusluettelon. Esimerkki:

merkkijono strCol=merkkijono('Rakastan');
strCol+ = {'','ja','tai','sinä','' 0''};
kustannus<<strCol<< '' n'';

Tulos: Rakastan sinua. On aina hyvä lisätä nolla, 0 merkkien alustusluettelon loppuun.

basic_string & append (const basic_string & str)

Liittää argumenttijono -objektin pääjono -objektiin. Esimerkki:

merkkijono strCol1=merkkijono('Rakastan');
merkkijono strCol2=merkkijono(' sinä');
strCol1.liittää(strCol2);
kustannus<<strCol1<< '' n'';

Tulos: Rakastan sinua.

basic_string & append (const charT* s)

Liittää merkkijonon literaalisen argumentin pääjonoon. Esimerkki

merkkijono strCol=merkkijono('Rakastan');
strCol=strCol.liittää(' sinä');
kustannus<<strCol<< '' n'';

Tulos: Rakastan sinua.

perus_merkkijono ja liitä (alustuslista)

Liittää alustusluettelon, joka on argumentti, pääjonoon. Esimerkki:

merkkijono strCol=merkkijono('Rakastan');
strCol=strCol.liittää({'','ja','tai','sinä','' 0''});
kustannus<<strCol<< '' n'';

Tulos: Rakastan sinua. On aina hyvä lisätä nolla, 0 -merkki alustusluettelon loppuun.

perus_merkkijono ja liite (kootyyppi n, luonne c)

Liittää n samaa merkkiä. Esimerkki:

merkkijono strCol=merkkijono('välilehti');
strCol=strCol.liittää(2, 'tai');
kustannus<<strCol<< '' n'';

Lähtö: tabu.

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

Liittää merkkijono -literaalin ensimmäisen n elementin pääjono -objektiin. Esimerkki:

merkkijono strCol=merkkijono('Rakastan');
strCol=strCol.liittää(' sinä niin', 4);
kustannus<<strCol<< '' n'';

Tulos on: Rakastan sinua. Jos n on suurempi kuin literaalin pituus, pituus_virhe -poikkeus heitetään.

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

Liittää päämerkkijonoon n merkkiä hakemistosta pos. Esimerkki:

merkkijono strCol=merkkijono('Rakastan');
strCol=strCol.liittää('oletko niin', 2, 4);
kustannus<<strCol<< '' n'';

Tulos: Rakastan sinua. Poikkeus heitetään myös tänne, katso myöhemmin.

Määrittäminen

perus_merkkijono&määrätä(constperus_merkkijono&s)

Määrittää argumenttijono -objektin pääjonolle korvaamalla siellä olevan sisällön.

merkkijono strCol1=merkkijono('Minä rakastan sinua');
merkkijono strCol2=merkkijono('Hän tarvitsee minua');
strCol1=strCol1.määrätä(strCol2);
kustannus<<strCol1<< '' n'';

Lopputulos: Hän tarvitsee minua.

perus_merkkijono&määrätä(constkartoittaa*s)

Määrittää merkkijonon literaalisen argumentin pääjonolle korvaamalla siellä olevan sisällön.

merkkijono strCol=merkkijono('Minä rakastan sinua');
strCol=strCol.määrätä('Hän tarvitsee minua');
kustannus<<strCol<< '' n'';

Lopputulos: Hän tarvitsee minua.

perus_merkkijono&määrätä(initial_list<kartoittaa>)

Määrittää alustuslista -argumentin pääjonolle,korvaamalla siellä oleva sisältö.
[cc lang='c'pakeni='totta'leveys='780']
merkkijono strCol=merkkijono('Minä rakastan sinua');
strCol=strCol.määrätä({'S','h','Ja','','n','Ja','Ja','d','s','','m','Ja','' 0''});
kustannus<<strCol<< '' n'';

Lopputulos: Hän tarvitsee minua. On hyvä lisätä aina nol, 0 merkkiluettelon loppuun, jotta muodostuu merkkijono.

perus_merkkijono&määrätä(constkartoittaa*s,koko_tyyppi n)

Määrittää merkkijonon kirjaimellisen argumentin ensimmäiset n merkkiä pääjonolle korvaamalla siellä olevan sisällön.

merkkijono strCol=merkkijono('Minä rakastan sinua');
strCol=strCol.määrätä('Hän tarvitsee minua', 9);
kustannus<<strCol<< '' n'';

Tulos: Hän tarvitsee.

perus_merkkijono&määrätä(koko_tyyppi n,luonne c)

Määrittää päämerkkijonolle argumentin, jossa on n samaa merkkiä, korvaamalla siellä olevan sisällön.

merkkijono strCol=merkkijono('Minä rakastan sinua');
strCol=strCol.määrätä(4, 'Ja');
kustannus<<strCol<< '' n'';

Lähtö: eeee

perus_merkkijono&määrätä(constperus_merkkijono&s,size_type pos,
koko_tyyppi n=npos)

Määrittää n merkkijonon objekti -argumentista, alkaen pos, päämerkkijonolle ja korvaa kaiken siellä olevan sisällön.

merkkijono strCol=merkkijono('Minä rakastan sinua');
strCol=strCol.määrätä('Hän tarvitsee minua', 4, 5);
kustannus<<strCol<< '' n'';

Lähtö: tarpeet. Poistaisi poikkeuksen - katso myöhemmin.

Lisätään

perus_merkkijono&lisää(size_type pos, constperus_merkkijono&s)

Lisää merkkijonoobjektiargumentin pääjonoon, indeksi, pos.

merkkijono strCol1=merkkijono('Minä rakastan sinua');
merkkijono strCol2=merkkijono('vihaa ja');
strCol1=strCol1.lisää(2,strCol2);
kustannus<<strCol1<< '' n'';

Lopputulos: Vihaan ja rakastan sinua. Poistaisi poikkeuksen - katso myöhemmin.

perus_merkkijono&lisää(koko_tyyppi pos1, constperus_merkkijono&
s,koko_tyyppi pos2,koko_tyyppi n=npos)

Lisää n merkin pituuden merkkijonoobjektiargumentin pos2: sta päämerkkijonoon, hakemistoon, pos1.

merkkijono strCol1=merkkijono('Minä rakastan sinua');
merkkijono strCol2=merkkijono('vihaa, haluta ja tarvita');
strCol1=strCol1.lisää(2,strCol2, 6, 9);
kustannus<<strCol1<< '' n'';

Lopputulos: Haluan ja rakastan sinua.

iteraattorin lisäys (const_iterator p, charT c)

Lisää tietyn merkin, joka on argumentti, iteraattorin osoittamaan kohtaan. Palauttaa iteraattorin juuri lisätyn merkin sijainnille.

merkkijono strCol=merkkijono('Minä rakastan sinua');
perus_merkkijono<hiiltyä> ::iteraattoriiter=strCol.alkaa();
++iter; ++iter; ++iter; ++iter; ++iter; ++iter;
perus_merkkijono<hiiltyä> ::iteraattoriverkkoon=strCol.lisää(iter, 'd');
kustannus<< *verkkoon<< '' n'';
kustannus<<strCol<< '' n'';

Lähtö on:

'D'

minä rakastin sinua

iteraattorin lisäys (const_iterator p, size_type n, charT c)

Lisää argumentin saman luonteen n iteraattorin osoittamaan kohtaan. Palauttaa iteraattorin vasta lisättyjen samojen merkkien alun sijainnille.

merkkijono strCol=merkkijono('Välilehti maassa.');
perus_merkkijono<hiiltyä> ::iteraattoriiter=strCol.alkaa();
++iter; ++iter; ++iter;
perus_merkkijono<hiiltyä> ::iteraattoriverkkoon=strCol.lisää(iter, 2, 'tai');
kustannus<< *verkkoon<< '' n'';
kustannus<<strCol<< '' n'';

Lähtö on:

'tai'

Tabu maassa.

perus_merkkijono&lisää(size_type pos, constkartoittaa*s)

Lisää argumentin merkkijonon literaalin hakemistoon, pos pääjonoon.

merkkijono strCol=merkkijono('Välilehti maassa.');
strCol=strCol.lisää(3, 'oo');
kustannus<<strCol<< '' n'';

Tulos: Tabu maassa.

perus_merkkijono&lisää(size_type pos, constkartoittaa*s,koko_tyyppi n)

Lisää argumentin merkkijonon literaalin ensimmäiset n merkkiä hakemistoon, pos pääjonoon.

merkkijono strCol=merkkijono('Välilehti maassa.');
strCol=strCol.lisää(3, 'oooo', 2);
kustannus<<strCol<< '' n'';

Tulos: Tabu maassa.

Vaihtaminen

perus_merkkijono&korvata(koko_tyyppi pos1,koko_tyyppi n1, constperus_merkkijono&s))

Korvaa n1 merkkiä päämerkkiobjektissa hakemistosta pos1 argumenttimerkkiobjektilla.

merkkijono strCol1=merkkijono('Minä rakastan sinua');
merkkijono strCol2=merkkijono('vihaan sinua ja');
strCol1=strCol1.korvata(2, 4,strCol2);
kustannus<<strCol1<< '' n'';

Lopputulos: Vihaan sinua ja sinua. Poistaisi poikkeuksen - katso myöhemmin.

perus_merkkijono&korvata(koko_tyyppi pos1,koko_tyyppi n1, constperus_merkkijono&
s,koko_tyyppi pos2,koko_tyyppi n2=npos)

Korvaa n1 merkit päämerkkiobjektissa hakemistosta pos1 ja n2 merkkiä argumentin merkkijonoobjektista hakemistosta pos2.

merkkijono strCol1=merkkijono('Minä rakastan sinua');
merkkijono strCol2=merkkijono('Vihaamme häntä ja häntä');
strCol1=strCol1.korvata(2, 4,strCol2, 3, 12);
kustannus<<strCol1<< '' n'';

Lopputulos: Vihaan häntä ja sinua.

perus_merkkijono&korvata(koko_tyyppi pos1,koko_tyyppi n1, constkartoittaa*s,
koko_tyyppi n2)

Korvaa päämerkkiobjektin n1 merkkiä hakemistosta pos1 kirjaimellisen merkkijonoargumentin ensimmäisten n2 merkin kanssa.

merkkijono strCol1=merkkijono('Minä rakastan sinua');
strCol1=strCol1.korvata(2, 4, 'vihaa häntä ja häntä', 12);
kustannus<<strCol1<< '' n'';

Lopputulos: Vihaan häntä ja sinua.

perus_merkkijono ja korvaa (kokotyyppi pos, kootyyppi n, const charT* s)

Korvaa n merkkijonon päämerkkiobjektissa hakemistosta pos, kirjaimellisella merkkijonoargumentilla.

merkkijono strCol1=merkkijono('Minä rakastan sinua');
strCol1=strCol1.korvata(2, 4, 'vihaa häntä ja');
kustannus<<strCol1<< '' n'';

Lopputulos: Vihaan häntä ja sinua.

perus_merkkijono&korvata(koko_tyyppi pos1,koko_tyyppi n1,koko_tyyppi n2,luonne c)

Korvaa n1 merkkiä päämerkkiobjektissa hakemistosta pos1 ja n2 samasta argumentin merkistä.

merkkijono strCol1=merkkijono('Huono tabletti siellä.');
strCol1=strCol1.korvata(9, 3, 2, 'tai');
kustannus<<strCol1<< '' n'';

Tulos: Huono tabu siellä ..

iteraattorin poisto (const_iterator p)

Poistaa merkin iteraattorin osoittamasta kohdasta; palauttaa sitten iteraattorin sijainnin, joka on nyt tämän merkin vieressä (tai lopussa ()) olevan merkin käytössä. Seuraava koodi havainnollistaa tätä:

merkkijono strCol=merkkijono('abcd');
perus_merkkijono<hiiltyä> ::iteraattoriiter=strCol.alkaa();
++iter; ++iter;
strCol.poistaa(iter);
kustannus<<strCol[0] << '' <<strCol[1] << ''
''
<<strCol[2]<< '' n'';

Lähtö: a b d

perus_merkkijono&poistaa(size_type pos= 0,koko_tyyppi n=npos)

Poistaa n merkkiä hakemistosta, pos.

merkkijono strCol=merkkijono('abcd');
strCol.poistaa(1, 2);
kustannus<<strCol[0] << '' <<strCol[1] << '' n'';

Lähtö: a d

void push_back (luonne c)

Yksittäisen merkin lisääminen merkkijonon loppuun:

merkkijono strCol=merkkijono('abcd');
strCol.työnnä takaisin('5');
kustannus<<strCol<< '' n'';

Lähtö: abcd5

void pop_back ()

Poistaa viimeisen merkin palauttamatta sitä. Merkkijonon kokoa pienennetään yhdellä.

merkkijono strCol=merkkijono('abcde');
strCol.pop_back();
kustannus<<strCol<< '' n'';

Lähtö: abcd

mitätön vaihto (perusmerkkijono & s)

Kahden merkkijonoobjektin literaaleja voidaan vaihtaa.

merkkijono strCol1=merkkijono(<apu='post-69618 -__ DdeLink__781_3724385525'>kohteeseen>'abcde');
merkkijono strCol2=merkkijono('1234567');
strCol1.vaihtaa(strCol2);
kustannus<<strCol1<< '' n'';
kustannus<<strCol2<< '' n'';

Lähtö on:

'1234567'
'abcde'

Jousitoiminnot

const charT* c_str () const noexcept

Palauttaa osoittimen merkkijonon ensimmäiseen elementtiin. Osoitinta voidaan suurentaa.

constmerkkijono strCol=merkkijono('abcde');
const hiiltyä*s=strCol.c_str();
kustannus<< *s<< '' n'';
++s;
kustannus<< *s<< '' n'';

Lähtö on:

kohteeseen
b

Otsikon toisen konstin vuoksi ohjelma ei voi muuttaa merkkijonon merkkiä. Rakennetta edeltää const.

const charT* data () const noexcept

Palauttaa osoittimen merkkijonon ensimmäiseen elementtiin. Osoitinta voidaan suurentaa.

constmerkkijono strCol=merkkijono('abcde');
const hiiltyä*s=strCol.tiedot();
kustannus<< *s<< '' n'';
++s;
kustannus<< *s<< '' n'';

Lähtö on:

kohteeseen
b

Otsikon toisen konstin vuoksi ohjelma ei voi muuttaa merkkijonon merkkiä. Rakennetta edeltää const.

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

Palauttaa n-merkkisen merkkijonokohteen alimerkkijonolle alkaen hakemistosta, pos.

constmerkkijono strCol=merkkijono('abcdefghij');
constmerkkijono retStr=strCol.substr(2, 4);
kustannus<<retStr<< '' n'';

Lähtö: cdef

find () Jäsentoiminnot

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

Etsii alijono-objektia hakemistosta alkaen, pos. Jos se löytyy, palauttaa pääjonon alimerkkijonon alun.

merkkijono strCol=merkkijono('Me olemme maailma!');
merkkijono strCol1=merkkijono('');
intyhdellä=strCol.löytö(strCol1, 2);
kustannus<<yhdellä<< '' n'';

Lähtö:

indeksi: 7
Palauttaa -1, kun ei löydy.

kokotyypin haku (const charT* s, size_type pos = 0) const

Etsii alimerkkijonon, joka alkaa hakemistosta, pos. Jos se löytyy, palauttaa pääjonon alimerkkijonon alun.

merkkijono strCol=merkkijono('Me olemme maailma!');
intyhdellä=strCol.löytö('ovat', 0);
kustannus<<yhdellä<< '' n'';

Koska pos = 0 on oletusarvo, 0 argumentista olisi voitu jättää pois.

Lähtö: 3

Palauttaa -1, kun ei löydy.

koon_tyyppi löytää (const charT* s, size_type pos, size_type n) const

Etsii hakemistosta alkavan alijono-literaalin ensimmäiset n merkkiä, pos. Jos se löytyy, palauttaa pääjonon alimerkkijonon alun.

merkkijono strCol=merkkijono('Suurin poika');
intyhdellä=strCol.löytö('suurempi', 1, 3);
kustannus<<yhdellä<< '' n'';

Lähtö: 4

Palauttaa -1, kun ei löydy.

kokotyypin haku (charT c, size_type pos = 0) const

Etsii merkkiä, c hakemistosta alkaen, pos. Jos se löytyy, palauttaa pääjonon alimerkkijonon alun. Jos ei löydy, palauttaa -1.

merkkijono strCol=merkkijono('Me olemme maailma!');
intyhdellä=strCol.löytö('Kanssa');
kustannus<<yhdellä<< '' n'';

Lähtö: -1

Seuraavat käänteisen haun () jäsentoiminnot ovat olemassa:

koko_tyyppi rfind(constperus_merkkijono&s,size_type pos=npos) constei paitsi;
koko_tyyppi rfind(constkartoittaa*s,size_type pos=npos) const;
koko_tyyppi rfind(constkartoittaa*s,size_type pos,koko_tyyppi n) const;
koko_tyyppi rfind(luonne c,size_type pos=npos) const;

Jäsentoimintojen vertailu

int vertaa (const basic_string & str) const noexcept

Vertaa argumenttijono -objektia päämerkkiobjektiin. Jos pääjono esiintyy ennen argumenttia (sanakirjassa), se palauttaa positiivisen luvun. Jos se esiintyy pääjonon jälkeen, se palauttaa negatiivisen luvun. Jos molemmat merkkijonot ovat samat, se palauttaa nollan.

merkkijono strCol1=merkkijono('väkijoukko');
merkkijono strCol2=merkkijono('ihmiset');
intyhdellä=strCol1.vertailla(strCol2);
kustannus<<yhdellä<< '' n'';

Lähtö: -13

int vertailla (const charT* s) const

Sama kuin yllä, mutta argumentti on merkkijono.

merkkijono strCol1=merkkijono('ihmiset');
intyhdellä=strCol1.vertailla('ihmiset');
kustannus<<yhdellä<< '' n'';

Lähtö: 0

Jono -operaattorit

Nämä operaattorit soveltuvat merkkijonoobjekteihin eivätkä välttämättä merkkijono -kirjaimiin.

+

Yhdistää kaksi merkkijonoobjektia ja palauttaa ketjutuksen.

merkkijono strCol1=merkkijono('tanssia');
merkkijono strCol2=merkkijono(' kuu');
merkkijono strCol=strCol1+strCol2;
kustannus<<strCol<< '' n'';

Tulos: tanssia kuussa.

==

Palauttaa arvon 1 tosi, jos merkkijonoobjektit ovat samat; ja nolla vääriä, jos ne eivät ole.

merkkijono strCol1=merkkijono('tanssia');
merkkijono strCol2=merkkijono(' kuussa');
bool bl=strCol1==strCol2;
kustannus<<bl<< '' n'';

Lähtö: 0

! =

Palauttaa 1, jos merkkijonoobjektit eivät ole samat, ja nolla, jos ne ovat.

merkkijono strCol1=merkkijono('tanssia');
merkkijono strCol2=merkkijono(' kuussa');
bool bl=strCol1! =strCol2;
kustannus<<bl<< '' n'';

Lähtö: 1

<

Palauttaa 1, jos vasen operandi on pienempi kuin oikea operandi sanakirjan mukaan, tai nolla, jos se ei ole.

merkkijono strCol1=merkkijono('tanssia');
merkkijono strCol2=merkkijono(' kuussa');
bool bl=strCol1<strCol2;
kustannus<<bl<< '' n'';

Lähtö: 0

C ++: n tavallisissa merkeissä nousevassa järjestyksessä numerot tulevat ennen isoja kirjaimia ja pieniä kirjaimia. Välihahmo tulee ennen nollaa ja ne kaikki.

C ++ - päämerkkijonotyypit

hiiltyä

Char -tyyppi on alkuperäinen C ++ -tyyppi, ja se tallentaa tyypillisesti merkin 8 bittiin.

char16_t

Tämä tallentaa merkin 16 bittiin.

char32_t

Tämä tallentaa merkin 32 bittiin.

wchar_t

char16_t ja char32_t ovat leveitä merkkejä. wchar_t on laaja merkki, joka on oma ja toteutuksen määrittämä.

Näitä tyyppejä kutsutaan piirteiksi. Kuitenkin C ++ viittaa niihin teknisesti ominaisuuksien erikoistumisina. Tämä artikkeli on keskittynyt char -tyyppiin. Lähestymistapa muihin tyyppeihin on hieman erilainen - katso myöhemmin.

Muut merkkijonotoimintojen jäsentoiminnot

Muiden merkkijonotoimintojen allekirjoitukset ovat:

kokotyyppi find_first_of(constperus_merkkijono&s,size_type pos= 0) constei paitsi;
kokotyyppi find_first_of(constkartoittaa*s,size_type pos,koko_tyyppi n) const;
kokotyyppi find_first_of(constkartoittaa*s,size_type pos= 0) const;
kokotyyppi find_first_of(luonne c,size_type pos= 0) const;
kokotyyppi find_last_of(constperus_merkkijono&s,size_type pos=npos) constei paitsi;
kokotyyppi find_last_of(constkartoittaa*s,size_type pos,koko_tyyppi n) const;
kokotyyppi find_last_of(constkartoittaa*s,size_type pos=npos) const;
kokotyyppi find_last_of(luonne c,size_type pos=npos) const;
kokotyyppi find_first_not_of(constperus_merkkijono&s,size_type pos= 0) constei paitsi;
kokotyyppi find_first_not_of(constkartoittaa*s,size_type pos,koko_tyyppi n) const;
kokotyyppi find_first_not_of(constkartoittaa*s,size_type pos= 0) const;
kokotyyppi find_first_not_of(luonne c,size_type pos= 0) const;
kokotyyppi find_last_not_of(constperus_merkkijono&s,size_type pos=npos) constei paitsi;
kokotyyppi find_last_not_of(constkartoittaa*s,size_type pos,koko_tyyppi n) const;
kokotyyppi find_last_not_of(constkartoittaa*s,size_type pos=npos) const;
kokotyyppi find_last_not_of(luonne c,size_type pos=npos) const;

Johtopäätös

C ++: ssa on merkkijonoja ja merkkijonoobjekteja. Merkkijonoobjektissa on merkkikokoelma peräkkäin, samanlainen kuin sarja merkkijonoa. Ero merkkijonokokoelman ja taulukon välillä on se, että merkkijonokokoelma voi kasvaa tai kutistua. Jono -objekti luodaan (rakennetaan) merkkijonoluokasta. Jono -objekti on tietorakenne, jossa on jäsenfunktioita. Jäsenfunktiot voidaan luokitella otsikoihin objektirakenne, elementtien käyttöoikeus, merkkijonon kapasiteetti, merkkijonofunktiot iteraattoriargumenteilla ja palautustyypeillä sekä merkkijonomuokkaimet. Myös merkkijono -tasa -arvo- ja relaatiooperaattoreita on olemassa.