Kõik, mida peate teadma stringide kohta C ++ keeles



See artikkel annab teile üksikasjalikud ja põhjalikud teadmised stringidest C ++ keeles ning näiteid erinevatest toimingutest.

Termin tähendab tähtede järjestust. Märkide jada saab esitada klassi C ++ objektiga. Klass, mis annab selle jaoks definitsiooni, nimetatakse Stringi klassiks. Stringklass salvestab tähemärgid baitide jadana funktsionaalsusega, mis võimaldab juurdepääsu ühebaidisele märgile. C ++ - s on ümbritsevad eraldajad topelt jutumärgid. Selles artiklis 'Strings in C ++' arutlen järgmistel teemadel:

mis on peamine viga

Stringklassi ja tähemassiivi erinevus

Keelpilliklass Tähemärkide massiiv
Stringklass on klass, mis määratleb objektid, mida saab kujutada märkide voogunaMärkide massiiv on lihtsalt märkide massiiv.
Stringide korral eraldatakse mälu dünaamiliselt, seega saab käitamise ajal nõudmisel eraldada rohkem mäluMärgimassiivi suurus tuleb eraldada staatiliselt, seega ei saa käitamisajal vajadusel rohkem mälu eraldada
Stringiklass määratleb rea funktsioone, mis võimaldavad stringidel mitmekordseid toiminguid.Märgistik ei paku palju sisseehitatud funktsioone stringide manipuleerimiseks
Stringid on rakendusega võrreldes aeglasemad kui märkide massiiv.Märgimassiivi rakendamine on kiiremini.

Deklareerige stringid ja lähtestage need C ++ keeles

strings-in-c++Stringi initsialiseerimine C ++ keeles on üsna lihtne !. Saame kasutada mis tahes järgmist meetodit.





nimeruumi kasutades std string std_string

või

std :: string std_string
#include kasutades nimeruumi st int main () {char ch [12] = {'H', 'e', ​​'l', 'l', 'o', '', 'b', 'y', '' , 'c', 'h', ''} string st = 'Tere, st' std :: string std_st = 'Tere, std_st' cout<< ch << endl cout << st << endl cout << std_st << endl return 0 }

Väljund:



Tere poolt ch Tere poolt st Tere poolt std_st

Selles näites oleme näidanud nii märkide massiivi (ch) kui ka stringi class (st ja std_st) initsialiseerimismeetodid. Esiteks kasutasime märkide massiivi meetodit, määratledes tähemassiivi ch [12], mis sisaldab 12 elementi ja lõpeb nullmärgiga. Teises osas kasutasime stringiklassi meetodit.

Operatsioonid stringidel C ++ keeles

Stringklassi kasutamise eeliseks on see, et C ++ -s on nende haldamiseks mitu sisseehitatud funktsiooni. See muudab programmeerimise lihtsaks ja tõhusaks. Võtame kasutusele teatud olulised stringidega manipuleerimise funktsioonid ja mõistame neid, vaadates mõnda näidet.

Stringi suurus: Nii suuruse () kui ka pikkuse () meetodit saab kasutada objekti suuruse tagastamiseks.



maksumus<< st.length() <

Väljund:

11 11

Stringi liitmine: Kaks või enam stringi saame liita, kasutades nende vahel lihtsalt + operaatorit

string new_string = st + 'ja' + std_st cout<< new_string <

Väljund:

Tere st ja tere std_st

Stringide lisamine: Klassiliikme .append (string) funktsiooni saab kasutada stringi ühendamiseks ja lisamiseks stringis kindlasse tähemärgi asukohta. Kui programmeerija paneb str.append (str1, p, n), siis see tähendab, et stringi str1 juurde lisatakse n arvu stringi str1 asendist p.

string str = 'Mulle meeldib õppida' string str1 = 'Python, C ++ või C' str. app (str1, 8, 3) cout<< str << endl

Väljund:

Mulle meeldib õppida C ++ keelt

Stringide otsimine: Funktsiooni find () abil saame leida stringi esimese esinemise teise seest. find () otsib nöörinõela nööri heinakuhja sees, alustades positsioonist positsioon ja tagastab nõela esimese esinemise positsiooni. Funktsioon rfind () töötab sarnaselt, ainult et see tagastab möödunud stringi viimase esinemise.

meetodi ülekoormamine vs meetodi ülimuslikkus
string heinakuhi = 'Tere maailm!' nöörnõel = 'o' cout<< haystack.find(needle)<

Väljund:

4 4 7 4294967295

Esimese käsu cout abil trükitakse lihtsalt „4”, mis on heinakuhja stringis esinenud „o” indeks. Kui tahame „Maailmas” tähte „o”, peame muutma sõna „pos” esimesest esinemisest mööda. haystack.find (nõel, 4) tagastaks jällegi 4, heinakuhja.find (nõel, 5) aga 7. Kui alamstringi ei leita, tagastab find () std :: string :: npos.

java teisendades topelt int

Npos on eriväärtus, mis võrdub tüübi size_type poolt esitatava maksimaalse väärtusega. Siin on see 4294967295. Üldiselt kasutatakse seda kas stringi indeksi ootavate funktsioonide stringi lõpuindikaatorina või stringi indeksi tagastavate funktsioonide veaindikaatorina.

See lihtne kood otsib stringi str2-s kõigi C ++ esinemiste kohta ja prindib nende positsioonid:

string str2 = 'C ++ on objektorienteeritud programmeerimiskeel ja sisaldab klasse, pärimist, polümorfismi, andmete abstraktsiooni ja kapseldamist. C ++ võimaldab erandite käsitlemist ja funktsioonide ülelaadimist, mis pole C.C ++ puhul võimalik, on võimas, tõhus ja kiire keel. ' for (string :: size_type i = 0, tfind (tfind = wikistr.find ('C ++', i))! = string :: npos i = tfind + 1) {std :: cout<< 'Found occurrence of 'C++' at position ' << tfind << std::endl }

Väljund:

Leitud „C ++” esinemine positsioonil 0 Leitud „C ++” esinemine positsioonil 132 Leitud „C ++” esinemine positsioonil 217
#include nimeruumi standardklassi baasi kasutamine {public: void fun_1 () {cout<< 'base class function 1n' } virtual void fun_2() { cout << 'base class function 2n' } virtual void fun_3() { cout << 'base class function 3n' } virtual void fun_4() { cout << 'base class function 4n' } } class derived : public base { public: void fun_1() { cout << 'derived class function 1n' } void fun_2() { cout << 'derived class function 2n' } void fun_4(int x) { cout fun_2 () // hiline köitmine (RTP) ptr-> fun_3 () // hiline köitmine (RTP) ptr-> fun_4 () // varajane sidumine, kuid see funktsioonikõne on // ebaseaduslik (tekitab viga), kuna osuti // on põhitüübi ja funktsiooni väärtus on // tuletatud klass // p-> fun_4 (5)}

Väljund:

põhiklassi funktsioon 1 tuletatud klassi funktsioon 2 baasklassi funktsioon 3 baasklassi funktsioon 4

Sellega jõuame selle artiklini Stringi kohta C ++ -s. Loodan, et saite aru erinevatest toimingutest, mida sellel saab teha. Kui soovite rohkem teada saada, vaadake usaldusväärse veebipõhise õppefirma Edureka Java koolitust. Edureka oma koolitus- ja sertifitseerimiskursus on mõeldud selleks, et õpetada teid nii Java-põhi kui ka edasijõudnutele mõeldud mõistete ning erinevate Java-raamistike jaoks, nagu talveunerežiim ja kevad.

Kas teil on meile küsimus? Palun mainige seda selle blogi kommentaaride jaotises ja võtame teiega ühendust niipea kui võimalik.