Všetko, čo potrebujete vedieť o reťazcoch v C ++



Tento článok vám poskytne podrobné a komplexné znalosti reťazcov v jazyku C ++ a poskytne tiež príklady rôznych operácií.

Termín znamená usporiadanú postupnosť znakov. Postupnosť znakov je možné reprezentovať pomocou objektu triedy v C ++. Trieda, ktorá poskytuje definíciu, sa nazýva String class. Trieda String ukladá znaky ako postupnosť bajtov s funkciou umožňujúcou prístup k jednobajtovému znaku. V C ++ sú ohraničujúce oddeľovače dvojité úvodzovky. V tomto článku „Strings in C ++“ sa budem venovať nasledujúcim témam:

Rozdiel v triede reťazcov a znakových polí

Trieda strún Pole znakov
Trieda reťazcov je trieda, ktorá definuje objekty, ktoré je možné reprezentovať ako prúd znakovPole znakov je jednoducho pole znakov.
V prípade reťazcov je pamäť alokovaná dynamicky, takže je možné na požiadanie alokovať viac pamäte za behuVeľkosť znakového poľa musí byť pridelená staticky, takže v prípade potreby nemožno za behu prideliť viac pamäte
Trieda reťazcov definuje množstvo funkcií, ktoré umožňujú rôzne operácie s reťazcami.Pole znakov neponúka veľa vstavaných funkcií na manipuláciu s reťazcami
Reťazce sú v porovnaní s implementáciou pomalšie v porovnaní s implementáciou.Implementácia znakového poľa je rýchlejšie.

Deklarujte a inicializujte reťazce v C ++

strings-in-c++Inicializácia reťazca v C ++ je celkom jednoduchá !. Môžeme použiť ktorúkoľvek z nasledujúcich metód.





pomocou menného priestoru std reťazec std_string

alebo

std :: string std_string
#include using namespace std int main () {char ch [12] = {'H', 'e', ​​'l', 'l', 'o', '', 'b', 'y', '' , 'c', 'h', ''} reťazec st = 'Dobrý deň od st' std :: reťazec std_st = 'Dobrý deň od std_st' cout<< ch << endl cout << st << endl cout << std_st << endl return 0 }

Výkon:



Dobrý deň od ch Dobrý deň od st Dobrý deň od std_st

V tomto príklade sme si ukázali pole znakov (ch) aj reťazec clmetódy inicializácie zadku (st a std_st). Najskôr sme použili metódu znakového poľa definovaním znakového poľa ch [12], ktoré obsahuje 12 prvkov a končí nulovým znakom. V druhej časti sme použili metódu triedy reťazcov.

final vs konečne vs finalizovať

Operácie na reťazcoch v C ++

Výhodou použitia triedy reťazcov je, že v C ++ je niekoľko zabudovaných funkcií na ich manipuláciu. Vďaka tomu je programovanie jednoduché a efektívne. Zoberme si niektoré dôležité funkcie manipulácie s reťazcami a pochopme ich na niekoľkých príkladoch.

Veľkosť šnúrky: Na vrátenie veľkosti objektu je možné použiť metódy size () aj length ().



náklady<< st.length() <

Výkon:

11 11

Zreťazenie reťazca: Dva alebo viac reťazcov môžeme zreťaziť jednoducho tak, že medzi nimi použijeme operátor +

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

Výkon:

Hello by st a Hello by std_st

Pripojenie reťazcov: Členskú funkciu triedy .append (reťazec) je možné použiť na zreťazenie a pripojenie reťazca na konkrétnom mieste znaku v reťazci. Ak programátor vloží str.append (str1, p, n), znamená to, že n počet znakov z pozície p v reťazci str1 bude pripojený na koniec str.

string str = 'Baví ma učiť sa' string str1 = 'Python, C ++ alebo C' str.append (str1, 8, 3) cout<< str << endl

Výkon:

c ++ stl triedenie
Rád sa učím C ++

Hľadanie reťazcov: Na nájdenie prvého výskytu reťazca vo vnútri iného môžeme použiť členskú funkciu find (). find () bude hľadať reťazcovú ihlu vo vnútri kopy sena počnúc pozíciou poz a vráti pozíciu prvého výskytu ihly. Funkcia rfind () funguje podobne, ibaže vráti posledný výskyt odovzdaného reťazca.

string haystack = 'Hello World!' ihla na motúziku = 'o' cout<< haystack.find(needle)<

Výkon:

4 4 7 4294967295

Prvý príkaz cout jednoducho vytlačí „4“, čo je index prvého výskytu „o“ v reťazci stohu sena. Ak chceme „o“ vo „svete“, musíme upraviť „pos“ tak, aby ukazovalo za prvý výskyt. haystack.find (ihla, 4) by opäť vrátil 4, zatiaľ čo haystack.find (ihla, 5) by dal 7. Ak sa podreťazec nenájde, find () vráti std :: string :: npos.

Npos je špeciálna hodnota rovná maximálnej hodnote predstavovanej typom size_type. Tu je 4294967295. Spravidla sa používa buď ako indikátor konca reťazca funkciami, ktoré očakávajú index reťazca, alebo ako indikátor chyby funkciami, ktoré vracajú index reťazca.

Tento jednoduchý kód vyhľadá v reťazci všetky výskyty „C ++“ v str2 a vytlačí ich polohy:

string str2 = 'C ++ je objektovo orientovaný programovací jazyk a obsahuje triedy, dedenie, polymorfizmus, abstrakciu dát a zapuzdrenie. C ++ umožňuje spracovanie výnimiek a preťaženie funkcií, ktoré v C.C ++ nie je možné, je výkonný, efektívny a rýchly jazyk. „ pre (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ýkon:

Nájdený výskyt 'C ++' na pozícii 0 Nájdený výskyt 'C ++' na pozícii 132 Nájdený výskyt 'C ++' na pozícii 217
#include using namespace std class base {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 () // Neskoré viazanie (RTP) ptr-> fun_3 () // Neskoré viazanie (RTP) ptr-> fun_4 () // Skoré viazanie, ale toto volanie funkcie je // nelegálne (vytvára chybu), pretože ukazovateľ // je základného typu a funkcie je // odvodená trieda // p-> fun_4 (5)}

Výkon:

funkcia základnej triedy 1 funkcia odvodenej triedy 2 funkcia základnej triedy 3 funkcia základnej triedy 4

Týmto sa dostávame ku koncu tohto článku o Strunách v C ++. Dúfam, že ste pochopili rôzne operácie, ktoré sa na ňom dajú vykonať. Ak sa chcete dozvedieť viac, vyskúšajte Java Training by Edureka, dôveryhodná online vzdelávacia spoločnosť. Edureka’s školiace a certifikačné kurzy sú navrhnuté tak, aby vás vyškolili pre základné aj pokročilé koncepty Java spolu s rôznymi rámcami Java, ako je Hibernate & Spring.

Máte na nás otázku? Uveďte to prosím v sekcii komentárov tohto blogu a my sa vám ozveme čo najskôr.