Tot ce trebuie să știți despre șirurile în C ++



Acest articol vă va oferi o cunoaștere detaliată și cuprinzătoare a șirurilor în C ++ și va oferi, de asemenea, exemple de diverse operații.

Termenul înseamnă o secvență ordonată de caractere. O secvență de caractere poate fi reprezentată folosind un obiect al unei clase în C ++. Clasa care oferă o definiție pentru a face acest lucru se numește clasă String. Clasa String stochează caracterele ca o secvență de octeți cu funcționalitatea de a permite accesul la caracterul cu un singur octet. În C ++, delimitatorii care conțin sunt ghilimele duble. În acest articol „Șiruri în C ++” voi discuta următoarele subiecte:

Diferența matricei de clase și caractere

Clasa de corzi Matrice de caractere
Clasa șir este o clasă care definește obiectele care pot fi reprezentate ca un flux de caractereMatricea de caractere este pur și simplu o matrice de caractere.
În cazul șirurilor, memoria este alocată dinamic, astfel încât mai multă memorie poate fi alocată în timpul rulării la cerereDimensiunea matricei de caractere trebuie să fie alocată static, astfel încât mai multă memorie nu poate fi alocată în timpul rulării, dacă este necesar
Clasa de șiruri definește o serie de funcționalități care permit operații multiple pe șiruri.Matricea de caractere nu oferă multe funcții încorporate pentru a manipula șirurile
Șirurile sunt mai lente în comparație cu implementarea decât matricea de caractere.Implementarea unei matrice de caractere este Mai repede.

Declarați și inițializați un șir în C ++

strings-in-c++Inițializarea șirului în C ++ este destul de simplă !. Putem folosi oricare dintre următoarele metode.





folosind spațiul de nume șir std std_string

sau

std :: string std_string
#include folosirea spațiului de nume std int main () {char ch [12] = {'H', 'e', ​​'l', 'l', 'o', '', 'b', 'y', '' , 'c', 'h', ''} string st = 'Hello by st' std :: string std_st = 'Hello by std_st' cout<< ch << endl cout << st << endl cout << std_st << endl return 0 }

Ieșire:



Bună ziua de ch Bună ziua de st Bună ziua de std_st

În acest exemplu, am arătat atât matricea de caractere (ch), cât și șirul clmetode de inițializare ass (st și std_st). În primul rând, am folosit metoda matricei de caractere definind o matrice de caractere ch [12] care conține 12 elemente și se termină cu un caracter nul. În partea a doua, am folosit o metodă de clasă șir.

Operații pe șiruri în C ++

Avantajul utilizării clasei de șiruri este că există mai multe funcții încorporate în C ++ pentru a le manipula. Acest lucru face ca programarea să fie ușoară și eficientă. Să luăm anumite funcții importante de manipulare a șirurilor și să le înțelegem uitându-ne la câteva exemple.

Dimensiunea șirului: Ambele metode size () și length () pot fi utilizate pentru a returna dimensiunea obiectului.



declarații de flux de control în java
cost<< st.length() <

Ieșire:

11 11

Concatenare șir: Putem concatena două sau mai multe șiruri pur și simplu folosind operatorul + între ele

string new_string = st + 'și' + std_st cout<< new_string <

Ieșire:

Hello by st și Hello by std_st

Așezarea șirurilor: Funcția de membru al clasei .append (șir) poate fi utilizată pentru a concatena și adăuga un șir la o anumită locație de caractere din șir. Dacă un programator pune str.append (str1, p, n), atunci înseamnă că n numărul de caractere din poziția p în șirul str1 va fi adăugat la sfârșitul str.

string str = 'Îmi place să învăț' string str1 = 'Python, C ++ sau C' str.append (str1, 8, 3) cout<< str << endl

Ieșire:

care este diferența dintre git și github
Îmi place să învăț C ++

Căutarea șirurilor: Putem folosi funcția find () membru pentru a găsi prima apariție a unui șir în interiorul altuia. find () va căuta ac de șir în coada de fân începând din poziția pos și va reveni la poziția primei apariții a acului. Funcția rfind () funcționează similar, cu excepția faptului că returnează ultima apariție a șirului trecut.

string haystack = 'Hello World!' string string = 'o' cout<< haystack.find(needle)<

Ieșire:

4 4 7 4294967295

Prima comandă Cout va imprima pur și simplu „4”, care este indicele primei apariții a „o” în șirul de fân. Dacă vrem „o” în „Lumea”, trebuie să modificăm „pos” pentru a trece peste prima apariție. haystack.find (ac, 4) ar returna din nou 4, în timp ce haystack.find (ac, 5) ar da 7. Dacă substring nu este găsit, find () returnează std :: string :: npos.

Npos este o valoare specială egală cu valoarea maximă reprezentabilă de tipul size_type. Aici este 4294967295. În general, este folosit fie ca indicator de sfârșit de șir de funcțiile care așteaptă un index de șir, fie ca indicator de eroare de funcțiile care returnează un șir de index.

Acest cod simplu caută într-un șir toate aparițiile „C ++” în str2 și imprimă pozițiile lor:

string str2 = 'C ++ este un limbaj de programare orientat pe obiecte și include clase, moștenire, polimorfism, extragerea datelor și încapsulare. ' 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 }

Ieșire:

S-a găsit apariția „C ++” la poziția 0 S-a găsit apariția „C ++” la poziția 132 S-a găsit apariția „C ++” la poziția 217
#include folosirea spațiului de nume 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 () // Legare târzie (RTP) ptr-> fun_3 () // Legare târzie (RTP) ptr-> fun_4 () // Legare timpurie, dar acest apel funcțional este // ilegal (produce eroare) deoarece de tipul de bază și funcția este de // clasa derivată // p-> fun_4 (5)}

Ieșire:

funcția clasei de bază 1 funcția clasei derivate 2 funcția clasei de bază 3 funcția clasei de bază 4

Cu aceasta, ajungem la sfârșitul acestui articol despre Șiruri în C ++. Sper că ați înțeles diferitele operațiuni care pot fi efectuate pe acesta. Dacă doriți să aflați mai multe, consultați Java Training de la Edureka, o companie de învățare online de încredere. Edureka’s cursul de formare și certificare sunt concepute pentru a vă instrui atât pentru conceptele Java de bază, cât și pentru cele avansate, împreună cu diverse cadre Java, cum ar fi Hibernate & Spring.

Ai o întrebare pentru noi? Vă rugăm să o menționați în secțiunea de comentarii a acestui blog și vă vom răspunde cât mai curând posibil.