Kako koristiti klasu niza C ++

How Use C String Class

Nizovni niz je niz znakova u pokazivaču konstantnog niza koji završava znakom nul, 0. Kada se identificira, pomoću varijable, niz znakova ne može stvarno smanjiti ili povećati duljinu. Mnoge se operacije ne mogu izvesti na doslovnom nizu. Dakle, postoji potreba za klasom niza. Klasa niza C ++ služi za strukturu podataka, zbirku znakova u nizu, koja omogućuje članskim funkcijama i operatorima da djeluju na znakove. Klasa niza dopušta više manipulacija na odgovarajućem literalnom nizu, nego samo na literalnom nizu. Da biste razumjeli ovaj članak, morate dobro poznavati doslovni niz.

Klasa i objekti

Klasa je skup varijabli i funkcija koje rade zajedno; gdje varijable nemaju dodijeljene vrijednosti. Kad se varijablama dodijele vrijednosti, klasa postaje objekt. Različite vrijednosti date istoj klasi rezultiraju različitim objektima; odnosno različiti objekti su ista klasa s različitim vrijednostima. Za stvaranje objekta iz klase kaže se da predstavlja instanciranje objekta.



Ime, niz, je klasa. Objekt kreiran iz klase string ima naziv koji je programer odabrao.



Funkcija koja pripada klasi potrebna je za instanciranje objekta iz klase. U C ++ ta funkcija ima isto ime kao i ime klase. Objekti stvoreni (instancirani) iz klase imaju različita imena koja im je dao programer.



Stvaranje objekta iz klase znači konstruiranje objekta; to također znači instanciranje.

C ++ program koji koristi klasu niza počinje sa sljedećim redovima pri vrhu datoteke:

#uključi
#uključi
koristeći imenski prostor std;

Prvi redak služi za ulaz/izlaz. Drugi redak je omogućiti programu da koristi sve značajke klase niza. Treći redak omogućuje programu korištenje imena u standardnom prostoru imena.



Preopterećenje funkcije

Kada dva ili više potpisa različitih funkcija imaju isto ime, kaže se da je to ime preopterećeno. Kada se pozove jedna funkcija, broj i vrsta argumenata, određuju koja se funkcija izvodi.

Graditeljstvo

niz()
Sljedeća naredba konstruira niz nulte duljine bez znakova.

niz strCol=niz();

Počinje imenom klase (vrsta objekta), nizom. Nakon toga slijedi naziv za objektni niz, koji je dao programer. Slijedi operator dodjeljivanja; zatim naziv konstruktora s praznim zagradama. Ovdje je strCol instancirani objekt sa svim članovima podataka (svojstvima) i funkcijama člana (metodama).
niz (str)
Ovo je slično gore navedenom, ali uzima ili literal niza ili identifikator kao argument u konstruktoru. Sljedeća izjava to ilustrira:

niz strCol=niz('Volim te');

Konstrukcija s popisom inicijalizatora

Sljedeći kod to ilustrira:

niz strCol=niz({'Ja','','the','ili','v','I','','i','ili','ti',' 0'});

Doslovni niz je Volim te. Zabilježite znak nul na kraju popisa inicijalizatora.

niz (str, n)

Time se formira zbirka nizova, od prvih n znakova drugog niza. Sljedeći kod to ilustrira:

charstr[] = 'Volim te';
niz strCol=niz(str, 6);
trošak<<strCol<< ' n';

Ispis je Volim s prvih 6 znakova iz Volim te. Upamtite: jedan razmak je lik.

niz (str, pos, n)

Time se formira zbirka nizova od n znakova, počevši od indeksirane pozicije, pos, drugog niza. Sljedeći kod to ilustrira:

charstr[] = 'Volim te';
niz strCol=niz(str, 2, 4);
trošak<<strCol<< ' n';

Rezultat je, ljubavi.

Za gornja dva slučaja, ako je n veće od veličine niza, izbacuje se iznimka out_of_range - vidi kasnije.

niz (n, 'c')

Formira zbirku od n znakova, gdje su svi znakovi isti. Smatrati,

niz strCol=niz(5,'I');
trošak<<strCol<< ' n';

Izlaz je, eeeee, 5 e.

Dodjeljivanje niza

Niz se može dodijeliti na sljedeći način, nakon što su deklarirana oba niza:

niz strCol1=niz('Volim te');
niz strCol2;
strCol2=strCol1;
trošak<<strCol2<< ' n';

Rezultat je, volim te.

Konstrukcija s Iteratorom

Iterator pruža generički prikaz skeniranja, kroz vrijednosti zbirke. Sintaksa za stvaranje niza s iteratorom je:

predložak<klasa InputIterator>
osnovni_niz(InputIterator počinje,InputIterator kraj, konstDodjeljivač&
do=Dodjeljivač());

Ovo konstruira niz za raspon [početak, kraj) - detalje pogledajte kasnije.

Uništavanje žice

Da biste uništili niz, samo ga pustite izvan opsega.

Pristup elementima klase niza

Objekt string instanciranog objekta može biti skriptiran (indeksiran) poput niza. Brojanje indeksa počinje od nule.

stringName [i]

Operacija stringName [i] vraća referencu na znak (element) na ithindeks zbirke likova. Sljedeći izlazi koda v:

niz strCol=niz('Volim te');
charCH=strCol[4];
trošak<<CH<< ' n';

stringName [i] const

Operacija stringName [i] const izvodi se umjesto stringName [i] kada je objekt niza konstantan objekt. Koristi se u sljedećem kodu, na primjer:

konstniz strCol=niz('Volim te');
charCH=strCol[4];
trošak<<CH<< ' n';

Izraz vraća stalnu referencu na ithelement string objekta. Nijedan element niza ne može se promijeniti.

Dodjeljivanje lika s potpisivanjem

Znak se može dodijeliti objektu koji nije konstantan niz, na sljedeći način:

niz strCol=niz('Zovem');
strCol[2] = 'f';
trošak<<strCol<< ' n';

Izlaz je padam. 'C' je promijenjeno u 'f'.

stringName.at (i)

stringName.at (i) je sličan stringName [i], ali stringName.at (i) je pouzdaniji. Sljedeći kôd pokazuje kako ga treba koristiti:

niz strCol=niz('Volim te');
charCH=strCol.na(4);
trošak<<CH<< ' n';

at () je zapravo funkcija člana klase niza.

stringName.at (i) const

stringName.at (i) const je sličan stringName [i] const, ali stringName.at (i) const je pouzdaniji. stringName.at (i) const se izvršava umjesto stringName.at (i) kada je string objekt konstantan string objekt. Koristi se u sljedećem kodu, na primjer:

konstniz strCol=niz('Volim te');
charCH=strCol.na(4);
trošak<<CH<< ' n';

at () const je zapravo funkcija člana klase niza.

Dodjeljivanje vrijednosti funkcijom at ()

Vrijednost se može dodijeliti nekonstantnom nizu objektu, s funkcijom at (), kako slijedi:

niz strCol=niz('Zovem');
strCol.na(2) = 'f';
trošak<<strCol<< ' n';

Izlaz je padam.

Problem sa pod-skriptama

Problem sa skriptiranjem (indeksiranjem) je taj što ako je indeks izvan raspona, može se dobiti pogrešan rezultat ili se može pojaviti greška tijekom izvođenja.

ispred()

Ovo vraća referencu na prvi element objekta niza, bez uklanjanja elementa. Ispis sljedećeg koda je 'I'.

niz strCol=niz('Volim te');
charCH=strCol.ispred();
trošak<<CH<< ' n';

Znak se ne uklanja iz objekta niza.

front () konst

Kada konstrukciji nizanog objekta prethodi const, umjesto front () izvodi se izraz front () const. Koristi se u sljedećem kodu, na primjer.

konstniz strCol=niz('Volim te');
charCH=strCol.ispred();
trošak<<CH<< ' n';

Vraća se stalna referenca. Element nije uklonjen iz objekta niza. Za objekt konstantnog niza ne može se promijeniti nikakav znak.

leđa()

Ovo vraća referencu na posljednji element string objekta, bez uklanjanja elementa. Izlaz sljedećeg koda je 'u'.

niz strCol=niz('Volim te');
charCH=strCol.leđa();
trošak<<CH<< ' n';

natrag () const

Kada konstrukciji nizanog objekta prethodi const, umjesto back () izvodi se izraz back () const. Koristi se u sljedećem kodu, na primjer.

konstniz strCol=niz('Volim te');
charCH=strCol.leđa();
trošak<<CH<< ' n';

Vraća se stalna referenca. Element nije uklonjen iz objekta niza.

Kapacitet niza

size_type capacity () const noexcept

Ukupna broj znakova koje niz može držati bez potrebe za preraspodjelom, vraćena je ovom funkcijom člana kapaciteta. Kodni segment za ovo je:

niz strCol=niz();
intna jedan=strCol.kapacitet();
trošak<<na jedan<< ' n';

Izlaz je 15 na mom računalu.

rezerva (n)

Memorijski prostor nije uvijek dostupan u slobodnoj trgovini. Dodatni prostor može se rezervirati unaprijed. Razmotrite sljedeći segment koda:

niz strCol=niz('ljubav');
strCol.pričuva(6);
trošak<<strCol.kapacitet() << ' n';

Izlaz je 15 na mom računalu.

size () const noexcept

Ovo vraća broj znakova u nizu. Sljedeći kod ilustrira:

niz strCol=niz('Volim te');
intna jedan=strCol.veličina();
trošak<<na jedan<< ' n';

Izlaz je 10, koji ne uključuje znak nul, 0.

length () const noexcept

-isto kao i veličina().
Bilješka:veličina() <=kapacitet().

smanjiti da stane()

Može smanjiti kapacitet () na veličinu () uzrokujući preraspodjelu; nije obavezno. Sljedeći kôd to pokazuje:

niz strCol=niz('Volim te');
strCol.pričuva(12);
strCol.smanjiti da stane();
ints=strCol.veličina();
trošak<<s<< ' n';

Izlaz je 10, a ne 12 ili 16. Funkcija vraća void.

promijeniti veličinu (sz), promijeniti veličinu (sz, 'c')

Time se mijenja veličina niza. Ako je nova veličina manja od stare, tada se elementi prema kraju brišu. Ako je nova veličina duža, tada se pred kraj dodaje neki zadani znak. Da biste dodali određeni znak, upotrijebite funkciju resize () s dva argumenta. Sljedeći segment koda ilustrira korištenje dviju funkcija:

niz strCol=niz('Volim te');
strCol.promijeniti veličinu(6);
trošak<< 'Nova veličina strCol:' <<strCol.veličina() << ' n';
niz strCol1=niz('Volim', 'I');
strCol1.promijeniti veličinu(12);
trošak<< 'Nova veličina strCol1:' <<strCol1.veličina() << ' n';

Izlaz je:

Nova veličina strCol: 6
Nova veličina strCol1: 12
Funkcija vraća void.

clear () noexcept

Uklanja sve elemente iz niza, kao što prikazuje sljedeći segment koda:

niz strCol=niz('Volim te');
strCol.čisto();
trošak<<strCol.veličina() << ' n';

Izlaz je 0. Funkcija vraća void.

empty () const noexcept

Ovo vraća 1 za true ako nema znaka u objektu stringa, ili 0 za false ako objekt niza nije prazan. Sljedeći kod to ilustrira:

niz strCol1=niz('Volim te');
trošak<<strCol1.prazan() << ' n';
niz strCol2=niz();
trošak<<strCol2.prazan() << ' n';

Izlaz je:

0
1

Povratni Iteratori i klasa niza

Ponavljač je poput pokazivača, ali ima više funkcija od pokazivača.

begin () noexcept

Vraća iterator koji pokazuje na prvi znak (element) objekta niza, kao u sljedećem segmentu koda:

niz strCol=niz('Volim te');
osnovni_niz<char> ::iteratoriter=strCol.početi();
trošak<< *iter<< ' n';

Izlaz je 'ja'. Obratite pozornost na način na koji je deklarirana deklaracija koja prima iterator. Iterator se dereferencira u povratnom izrazu kako bi se dobila vrijednost, na isti način na koji se pokazivač dereferencira.

begin () const noexcept;

Vraća iterator koji pokazuje na prvi element zbirke nizovanih objekata. Kad konstrukciji objekta prethodi const, umjesto begin () izvodi se izraz begin () const. Pod ovim uvjetom, odgovarajući element u objektu ne može se mijenjati. Koristi se u sljedećem kodu, na primjer.

konstniz strCol=niz('Volim te');
osnovni_niz<char> ::const_iteratoriter=strCol.početi();
trošak<< *iter<< ' n';

Izlaz je 'ja'. Imajte na umu da je const_iterator ovaj put korišten, umjesto samo iteratora, za primanje vraćenog iteratora.

end () noexcept

Vraća iterator koji pokazuje neposredno iza posljednjeg elementa objekta niza. Razmotrite sljedeći segment koda:

niz strCol=niz('Volim te');
osnovni_niz<char> ::iteratoriter=strCol.kraj();
trošak<< *iter<< ' n';

Izlaz je null, što je ništa, jer nema konkretnog elementa osim zadnjeg elementa.

end () const noexcept

Vraća iterator koji pokazuje neposredno iza posljednjeg elementa objekta niza. Kada konstrukciji nizanog objekta prethodi const, umjesto end () izvodi se izraz end () const. Razmotrite sljedeći segment koda:

konstniz strCol=niz('Volim te');
osnovni_niz<char> ::const_iteratoriter=strCol.kraj();
trošak<< *iter<< ' n';

Izlaz je null. Imajte na umu da je const_iterator ovaj put korišten, umjesto samo iteratora, za primanje vraćenog iteratora.

Obrnuto ponavljanje

Moguće je imati iterator koji ponavlja od stvarnog kraja do neposredno prije prvog elementa:

rbegin () noexcept

Vraća iterator koji pokazuje na posljednji element objekta s instancom niza, kao u sljedećem segmentu koda:

niz strCol=niz('Volim te');
osnovni_niz<char> ::obrnuti_pisaciter=strCol.rpočeti();
trošak<< *iter<< ' n';

Izlaz je 'u'. Obratite pozornost na način na koji je deklarirana deklaracija koja prima obrnuti iterator. Iterator se dereferencira u povratnom izrazu kako bi se dobila vrijednost, na isti način na koji se pokazivač dereferencira.

rbegin () const noexcept;

Vraća iterator koji pokazuje na posljednji element string objekta. Kada konstrukciji objekta prethodi const, umjesto rbegin () izvodi se izraz rbegin () const. Pod ovim uvjetom, odgovarajući element u objektu ne može se mijenjati. Značajka se koristi u sljedećem kodu, na primjer.

konstniz strCol=niz('Volim te');
osnovni_niz<char> ::const_reverse_iteratoriter=strCol.rpočeti();
trošak<< *iter<< ' n';

Izlaz je 'u'. Imajte na umu da je const_reverse_iterator ovaj put korišten, umjesto samo reverse_iterator, za primanje vraćenog iteratora.

render () noexcept

Vraća iterator koji pokazuje neposredno prije prvog elementa string objekta. Razmotrite sljedeći segment koda:

niz strCol=niz('Volim te');
osnovni_niz<char> ::obrnuti_pisaciter=strCol.pravi();
trošak<< *iter<< ' n';

Izlaz je null, što je ništa, jer ne postoji konkretan element neposredno prije prvog elementa.

render () const noexcept

Vraća iterator koji pokazuje neposredno prije prvog elementa string objekta. Kada konstrukciji objekta prethodi const, umjesto rend () izvodi se izraz rend () const. Razmotrite sljedeći segment koda:

konstniz strCol=niz('Volim te');
osnovni_niz<char> ::const_reverse_iteratoriter=strCol.pravi();
trošak<< *iter<< ' n';

Izlaz je null. Imajte na umu da je const_reverse_iterator ovaj put korišten, umjesto samo reverse_iterator, za primanje vraćenog iteratora.

Izmjenjivači nizova

Modifikator koji mijenja objekt niza također može uzeti ili vratiti iterator.

Dodavanje

osnovni_niz&operater+ =(konstosnovni_niz&str)

Dodaje desni objekt niza lijevom nizu. Primjer:

niz strCol1=niz('Volim');
niz strCol2=niz('ti');
strCol1+ =strCol2;
trošak<<strCol1<< ' n';

Rezultat je Volim te. Ne zaboravite da je strCol1 += strCol2 isto što i strCol1 = strCol1 +strCol2.

basic_string & operator+= (const charT* s)

Dodaje literal niza u zbirku objekata niza. Primjer:

niz strCol=niz('Volim');
strCol+ = 'ti';
trošak<<strCol<< ' n';

Ishod: Volim te.

basic_string & operator+= (grafikon c)

Dodaje jedan znak objektnom nizu. Primjer:

niz strCol=niz('Volim te');
strCol+ = 'ti';
trošak<<strCol<< ' n';

Ishod: Volim te.

basic_string & operator+= (inicijalizator_list)

Dodaje popis inicijalizatora. Primjer:

niz strCol=niz('Volim');
strCol+ = {'','i','ili','ti',' 0'};
trošak<<strCol<< ' n';

Ishod: Volim te. Uvijek je dobro dodati nul, 0 na kraj popisa inicijalizatora znakova.

basic_string & append (const basic_string & str)

Dodaje objekt niz argumenata glavnom objektu niza. Primjer:

niz strCol1=niz('Volim');
niz strCol2=niz('ti');
strCol1.dodati(strCol2);
trošak<<strCol1<< ' n';

Ishod: Volim te.

basic_string & append (const charT* s)

Dodaje doslovni argument niza glavnom nizu. Primjer

niz strCol=niz('Volim');
strCol=strCol.dodati('ti');
trošak<<strCol<< ' n';

Ishod: Volim te.

osnovni_string i dodavanje (popis inicijalizatora)

Dodaje popis inicijalizatora, koji je argument, u glavni niz. Primjer:

niz strCol=niz('Volim');
strCol=strCol.dodati({'','i','ili','ti',' 0'});
trošak<<strCol<< ' n';

Ishod: Volim te. Uvijek je dobro dodati znak nul, 0 na kraj popisa inicijalizatora.

basic_string & append (veličina_vrsta n, grafikon c)

Dodaje n istog znaka. Primjer:

niz strCol=niz('kartica');
strCol=strCol.dodati(2, 'ili');
trošak<<strCol<< ' n';

Izlaz: tabu.

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

Dodaje prvih n elemenata literala niza glavnom objektu niza. Primjer:

niz strCol=niz('Volim');
strCol=strCol.dodati('ti tako', 4);
trošak<<strCol<< ' n';

Rezultat je: Volim te. Ako je n veće od duljine literala, izbacuje se iznimka length_error.

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

Dodaje n znakova iz indeksa, pos u glavni niz. Primjer:

niz strCol=niz('Volim');
strCol=strCol.dodati(jesi li tako, 2, 4);
trošak<<strCol<< ' n';

Ishod: Volim te. Ovdje bi se također napravila iznimka, vidi kasnije.

Dodjeljivanje

osnovni_niz&dodijeliti(konstosnovni_niz&str)

Dodjeljuje objekt nizu argumenata glavnom nizu, zamjenjujući bilo koji sadržaj koji je tamo bio.

niz strCol1=niz('Volim te');
niz strCol2=niz('Trebam je');
strCol1=strCol1.dodijeliti(strCol2);
trošak<<strCol1<< ' n';

Ishod: Trebam je.

osnovni_niz&dodijeliti(konstgrafikon*s)

Glavnom nizu dodjeljuje doslovni argument niza, zamjenjujući bilo koji sadržaj koji se tamo nalazio.

niz strCol=niz('Volim te');
strCol=strCol.dodijeliti('Trebam je');
trošak<<strCol<< ' n';

Ishod: Trebam je.

osnovni_niz&dodijeliti(Initilizer_list<grafikon>)

Glavnom nizu dodjeljuje argument popisa inicijalizatora,zamjenjujući bilo koji sadržaj koji se tamo nalazio.
[cc lang='c'pobjegao='pravi'širina='780']
niz strCol=niz('Volim te');
strCol=strCol.dodijeliti({'S','h','I','','n','I','I','d','s','','m','I',' 0'});
trošak<<strCol<< ' n';

Ishod: Trebam je. Dobro je uvijek dodati nul, 0 na kraju popisa znakova, kako biste oblikovali literal niza.

osnovni_niz&dodijeliti(konstgrafikon*s,veličina_vrsta n)

Dodjeljuje prvih n znakova argumenta doslovnog niza glavnom nizu, zamjenjujući bilo koji sadržaj koji se tamo nalazio.

niz strCol=niz('Volim te');
strCol=strCol.dodijeliti('Trebam je', 9);
trošak<<strCol<< ' n';

Ishod: Ona treba.

osnovni_niz&dodijeliti(veličina_vrsta n,grafikon c)

Glavnom nizu dodjeljuje argument od n istih znakova zamjenjujući bilo koji sadržaj koji je tamo bio.

niz strCol=niz('Volim te');
strCol=strCol.dodijeliti(4, 'I');
trošak<<strCol<< ' n';

Izlaz: eeee

osnovni_niz&dodijeliti(konstosnovni_niz&str,veličina_pos. poz,
veličina_vrsta n=npos)

Dodjeljuje n znakova argumenta objekta niza, počevši od pos, glavnom nizu, zamjenjujući bilo koji sadržaj koji je tamo bio.

niz strCol=niz('Volim te');
strCol=strCol.dodijeliti('Trebam je', 4, 5);
trošak<<strCol<< ' n';

Ishod: potrebe. Napravio bih iznimku - vidjeti kasnije.

Umetanje

osnovni_niz&umetnuti(veličina_pos. poz, konstosnovni_niz&str)

Umetne argument objekta niza u glavni niz, u indeksu, poz.

niz strCol1=niz('Volim te');
niz strCol2=niz('mržnja i');
strCol1=strCol1.umetnuti(2,strCol2);
trošak<<strCol1<< ' n';

Ishod: Mrzim te i volim. Napravio bih iznimku - vidjeti kasnije.

osnovni_niz&umetnuti(size_type pos1, konstosnovni_niz&
str,size_type pos2,veličina_vrsta n=npos)

Umeta duljinu od n znakova iz pos2 argumenta objekta niza u glavni niz, u indeksu, pos1.

niz strCol1=niz('Volim te');
niz strCol2=niz('mržnja, želja i potreba');
strCol1=strCol1.umetnuti(2,strCol2, 6, 9);
trošak<<strCol1<< ' n';

Ishod: Želim te i volim.

iterator insert (const_iterator p, charT c)

Umetne određeni znak, koji je argument, u položaj na koji ukazuje iterator. Vraća iterator za položaj novo umetnutog znaka.

niz strCol=niz('Volim te');
osnovni_niz<char> ::iteratoriter=strCol.početi();
++iter; ++iter; ++iter; ++iter; ++iter; ++iter;
osnovni_niz<char> ::iteratormreža=strCol.umetnuti(iter, 'd');
trošak<< *mreža<< ' n';
trošak<<strCol<< ' n';

Izlaz je:

'D'

volio sam te

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

Umeta n istog karaktera argumenta u položaj na koji pokazuje iterator. Vraća iterator za položaj početka novo umetnutih istih znakova.

niz strCol=niz('Kartica u zemlji.');
osnovni_niz<char> ::iteratoriter=strCol.početi();
++iter; ++iter; ++iter;
osnovni_niz<char> ::iteratormreža=strCol.umetnuti(iter, 2, 'ili');
trošak<< *mreža<< ' n';
trošak<<strCol<< ' n';

Izlaz je:

'ili'

Tabu u zemlji.

osnovni_niz&umetnuti(veličina_pos. poz, konstgrafikon*s)

Umeta literal niza argumenata u indeks, pos u glavni niz.

niz strCol=niz('Kartica u zemlji.');
strCol=strCol.umetnuti(3, 'oo');
trošak<<strCol<< ' n';

Ishod: Tabu u zemlji.

osnovni_niz&umetnuti(veličina_pos. poz, konstgrafikon*s,veličina_vrsta n)

Umeta prvih n znakova literal argumenta string, u indeks, pos u glavni niz.

niz strCol=niz('Kartica u zemlji.');
strCol=strCol.umetnuti(3, 'oooo', 2);
trošak<<strCol<< ' n';

Ishod: Tabu u zemlji.

Zamjena

osnovni_niz&zamijeniti(size_type pos1,veličina_vrsta n1, konstosnovni_niz&str))

Zamjenjuje n1 znakove u glavnom objektu niza iz indeksa, pos1, s objektom niza argumenata.

niz strCol1=niz('Volim te');
niz strCol2=niz('mrzim te i');
strCol1=strCol1.zamijeniti(2, 4,strCol2);
trošak<<strCol1<< ' n';

Ishod: Mrzim tebe i tebe. Napravio bih iznimku - vidjeti kasnije.

osnovni_niz&zamijeniti(size_type pos1,veličina_vrsta n1, konstosnovni_niz&
str,size_type pos2,veličina_tip n2=npos)

Zamjenjuje n1 znakova u glavnom nizu objekta iz indeksa, pos1, s n2 znaka objekta niza argumenata iz indeksa, pos2.

niz strCol1=niz('Volim te');
niz strCol2=niz('mrzimo njega i nju');
strCol1=strCol1.zamijeniti(2, 4,strCol2, 3, 12);
trošak<<strCol1<< ' n';

Ishod: Mrzim njega i tebe.

osnovni_niz&zamijeniti(size_type pos1,veličina_vrsta n1, konstgrafikon*s,
veličina_tip n2)

Zamjenjuje n1 znakove u glavnom objektu niza iz indeksa, pos1, s prvih n2 znakova argumenta doslovnog niza.

niz strCol1=niz('Volim te');
strCol1=strCol1.zamijeniti(2, 4, 'mrzi njega i nju', 12);
trošak<<strCol1<< ' n';

Ishod: Mrzim njega i tebe.

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

Zamjenjuje n znakova u glavnom objektu niza iz index, pos, s doslovnim argumentom string.

niz strCol1=niz('Volim te');
strCol1=strCol1.zamijeniti(2, 4, 'mrzi ga i');
trošak<<strCol1<< ' n';

Ishod: Mrzim njega i tebe.

osnovni_niz&zamijeniti(size_type pos1,veličina_vrsta n1,veličina_tip n2,grafikon c)

Zamjenjuje n1 znakove u glavnom objektu niza iz indeksa, pos1, s n2 istog karaktera argumenta.

niz strCol1=niz('Tamo je loš tablet.');
strCol1=strCol1.zamijeniti(9, 3, 2, 'ili');
trošak<<strCol1<< ' n';

Rezultat: Loš tabu ..

brisanje iteratora (const_iterator p)

Uklanja znak na mjestu na koje pokazuje iterator; zatim vraća poziciju iteratora, koju sada zauzima znak koji je bio pored ovog znaka (ili kraj ()). Sljedeći kod to ilustrira:

niz strCol=niz('abcd');
osnovni_niz<char> ::iteratoriter=strCol.početi();
++iter; ++iter;
strCol.izbrisati(iter);
trošak<<strCol[0] << '' <<strCol[1] << '
'
<<strCol[2]<< ' n';

Izlaz: a b d

osnovni_niz&izbrisati(veličina_pos. poz= 0,veličina_vrsta n=npos)

Uklanja n znakova iz indeksa, poz.

niz strCol=niz('abcd');
strCol.izbrisati(1, 2);
trošak<<strCol[0] << '' <<strCol[1] << ' n';

Izlaz: a d

void push_back (grafikon c)

Da biste dodali jedan znak na kraju niza:

niz strCol=niz('abcd');
strCol.odgurnuti('5');
trošak<<strCol<< ' n';

Izlaz: abcd5

void pop_back ()

Uklanja zadnji znak bez vraćanja. Veličina žice se smanjuje za 1.

niz strCol=niz('a B C D E');
strCol.pop_back();
trošak<<strCol<< ' n';

Izlaz: abcd

void swap (basic_string & s)

Literale dva string objekta mogu se zamijeniti.

niz strCol1=niz(<id='post-69618 -__ DdeLink__781_3724385525'>do>'a B C D E');
niz strCol2=niz('1234567');
strCol1.zamijeniti(strCol2);
trošak<<strCol1<< ' n';
trošak<<strCol2<< ' n';

Izlaz je:

'1234567'
'a B C D E'

Nizne operacije

const charT* c_str () const noexcept

Vraća pokazivač na prvi element niza. Pokazivač se može povećati.

konstniz strCol=niz('a B C D E');
konst char*str=strCol.c_str();
trošak<< *str<< ' n';
++str;
trošak<< *str<< ' n';

Izlaz je:

do
b

Zbog drugog sastava u naslovu, program ne može promijeniti bilo koji znak u nizu. Izgradnji prethodi konst.

const charT* data () const noexcept

Vraća pokazivač na prvi element niza. Pokazivač se može povećati.

konstniz strCol=niz('a B C D E');
konst char*str=strCol.podaci();
trošak<< *str<< ' n';
++str;
trošak<< *str<< ' n';

Izlaz je:

do
b

Zbog drugog sastava u naslovu, program ne može promijeniti bilo koji znak u nizu. Izgradnji prethodi konst.

osnovni niz podniz (veličina_vrsta pos = 0, veličina_vrsta n = npos) konst

Vraća objekt niza od n znakova za podniz koji počinje od indeksa, poz.

konstniz strCol=niz('abcdefghij');
konstniz retStr=strCol.podstr(2, 4);
trošak<<retStr<< ' n';

Izlaz: cdef

find () Funkcije člana

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

Traži objekt podniza koji počinje od indeksa, poz. Ako se pronađe, vraća početak podniza u glavnom nizu.

niz strCol=niz('Mi smo svijet!');
niz strCol1=niz('the');
intna jedan=strCol.pronaći(strCol1, 2);
trošak<<na jedan<< ' n';

Izlaz:

indeks: 7
Vraća -1, ako nije pronađeno.

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

Traži literal podniza koji počinje od indeksa, poz. Ako se pronađe, vraća početak podniza u glavnom nizu.

niz strCol=niz('Mi smo svijet!');
intna jedan=strCol.pronaći('su', 0);
trošak<<na jedan<< ' n';

Budući da je pos = 0 zadana vrijednost, 0 u argumentu se moglo izostaviti.

Izlaz: 3

Vraća -1, ako nije pronađeno.

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

Traži prvih n znakova literala podniza koji počinje od indeksa, poz. Ako se pronađe, vraća početak podniza u glavnom nizu.

niz strCol=niz('Najveći dječak');
intna jedan=strCol.pronaći('veći', 1, 3);
trošak<<na jedan<< ' n';

Izlaz: 4

Vraća -1, ako nije pronađeno.

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

Traži znak, c počinje od indeksa, poz. Ako se pronađe, vraća početak podniza u glavnom nizu. Ako nije pronađen, vraća -1.

niz strCol=niz('Mi smo svijet!');
intna jedan=strCol.pronaći('S');
trošak<<na jedan<< ' n';

Izlaz: -1

Sljedeće funkcije obrnutog find () postoje:

size_type rfind(konstosnovni_niz&str,veličina_pos. poz=npos) konstnoexcept;
size_type rfind(konstgrafikon*s,veličina_pos. poz=npos) konst;
size_type rfind(konstgrafikon*s,veličina_pos. poz,veličina_vrsta n) konst;
size_type rfind(grafikon c,veličina_pos. poz=npos) konst;

Usporedne funkcije člana

int usporedi (const basic_string & str) const noexcept

Uspoređuje objekt niza argumenata s glavnim objektom niza. Ako se glavni niz pojavi prije argumenta (u rječniku), vraća pozitivan broj. Ako se pojavi nakon glavnog niza, vraća negativan broj. Ako su dva niza ista, vraća nulu.

niz strCol1=niz('gužva');
niz strCol2=niz('narod');
intna jedan=strCol1.usporediti(strCol2);
trošak<<na jedan<< ' n';

Izlaz: -13

int usporediti (const charT* s) const

Isto kao gore, ali argument je literal niza.

niz strCol1=niz('narod');
intna jedan=strCol1.usporediti('narod');
trošak<<na jedan<< ' n';

Izlaz: 0

Niz operatori

Ovi operatori primjenjivi su na nizove objekata, a ne nužno na nizove.

+

Povezuje dva string objekta i vraća povezivanje.

niz strCol1=niz('ples na');
niz strCol2=niz(' mjesec');
niz strCol=strCol1+strCol2;
trošak<<strCol<< ' n';

Ishod: ples na Mjesecu.

==

Vraća 1 za true, ako su objekti niza isti; i nula za false, ako nisu.

niz strCol1=niz('ples na');
niz strCol2=niz(' na Mjesecu');
bool bl=strCol1==strCol2;
trošak<<bl<< ' n';

Izlaz: 0

! =

Vraća 1 ako nizovi objekti nisu isti, a nulu ako jesu.

niz strCol1=niz('ples na');
niz strCol2=niz(' na Mjesecu');
bool bl=strCol1! =strCol2;
trošak<<bl<< ' n';

Izlaz: 1

<

Vraća 1, ako je lijevi operand manji od desnog prema rječniku, ili nulu ako nije.

niz strCol1=niz('ples na');
niz strCol2=niz(' na Mjesecu');
bool bl=strCol1<strCol2;
trošak<<bl<< ' n';

Izlaz: 0

Za obične znakove u C ++, u rastućem redoslijedu, brojevi dolaze ispred velikih slova, koji dolaze ispred malih slova. Znak za razmak dolazi ispred nule i svi oni.

C ++ Vrste znakova glavnog niza

char

Tip char je izvorni C ++ tip i obično bi pohranio znak u 8 bita.

char16_t

Ovo sprema znak u 16 bita.

char32_t

Ovo sprema znak u 32 bita.

wchar_t

char16_t i char32_t široki su znakovi. wchar_t je širokog karaktera koji je vlasnički definiran i definiran implementacijom.

Ove vrste se nazivaju osobine. Međutim, C ++ ih tehnički naziva specijalizacijama svojstava. Ovaj se članak fokusirao na tip znakova. Pristup ostalim vrstama je malo drugačiji - pogledajte kasnije.

Ostale funkcije operatora niza

Potpisi drugih funkcija rada s nizovima su:

size_type find_first_of(konstosnovni_niz&str,veličina_pos. poz= 0) konstnoexcept;
size_type find_first_of(konstgrafikon*s,veličina_pos. poz,veličina_vrsta n) konst;
size_type find_first_of(konstgrafikon*s,veličina_pos. poz= 0) konst;
size_type find_first_of(grafikon c,veličina_pos. poz= 0) konst;
size_type find_last_of(konstosnovni_niz&str,veličina_pos. poz=npos) konstnoexcept;
size_type find_last_of(konstgrafikon*s,veličina_pos. poz,veličina_vrsta n) konst;
size_type find_last_of(konstgrafikon*s,veličina_pos. poz=npos) konst;
size_type find_last_of(grafikon c,veličina_pos. poz=npos) konst;
size_type find_first_not_of(konstosnovni_niz&str,veličina_pos. poz= 0) konstnoexcept;
size_type find_first_not_of(konstgrafikon*s,veličina_pos. poz,veličina_vrsta n) konst;
size_type find_first_not_of(konstgrafikon*s,veličina_pos. poz= 0) konst;
size_type find_first_not_of(grafikon c,veličina_pos. poz= 0) konst;
size_type find_last_not_of(konstosnovni_niz&str,veličina_pos. poz=npos) konstnoexcept;
size_type find_last_not_of(konstgrafikon*s,veličina_pos. poz,veličina_vrsta n) konst;
size_type find_last_not_of(konstgrafikon*s,veličina_pos. poz=npos) konst;
size_type find_last_not_of(grafikon c,veličina_pos. poz=npos) konst;

Zaključak

C ++ ima niz literala i niz objekata. Objekt string ima niz znakova u nizu, sličnih nizu znakova u nizu. Razlika između zbirke nizova i niza je u tome što zbirka nizova može narasti u duljinu ili se smanjiti. Objekt niza instancira se (konstruira) iz klase niza. Nizni objekt je struktura podataka s funkcijama članovima. Funkcije članice mogu se klasificirati pod naslove izgradnje objekta, pristupa elementu, kapaciteta niza, funkcija člana niza s argumentima iteratora i vrstama vraćanja te modifikatora niza. Postoje i operatori jednakosti nizova i relacijski operatori.