În C++, un șir este, de obicei, doar o matrice de (sau o referință/punctează către) caractere care se termină cu caracterul NULL „ ‘. Un șir este o matrice unidimensională de caractere și o matrice de șiruri este o matrice bidimensională de caractereunde fiecare rând conține un șir.
Mai jos sunt cele 5 moduri diferite de a crea o matrice de șiruri de caractere în C++:
- Folosind Indicatori
- Folosind Matrice 2-D
- Folosind Clasa String
- Folosind Clasa Vector
- Folosind Clasa Array
1. Folosind pointeri
Pointerii sunt reprezentarea simbolică a unei adrese. Cu cuvinte simple, un pointer este ceva care stochează adresa unei variabile în el. În această metodă, o matrice de literali șir este creată de o matrice de pointeri în carefiecare indicator indică un anumit șir.
Exemplu:
C++
// C++ program to demonstrate> // array of strings using> // pointers character array> #include> // Driver code> int> main()> {> >// Initialize array of pointer> >const> char>* colour[4]> >= {>'Blue'>,>'Red'>,>'Orange'>,>'Yellow'> };> >// Printing Strings stored in 2D array> >for> (>int> i = 0; i <4; i++)> >std::cout << colour[i] <<>'
'>;> >return> 0;> }> |
șir în matrice în c
>
>Ieșire
Blue Red Orange Yellow>
Explicaţie:
- Numărul de șiruri este fix, dar nu trebuie să fie. Cele 4 pot fi omise, iar compilatorul va calcula dimensiunea corectă.
- Aceste șiruri sunt constante și conținutul lor nu poate fi modificat. Deoarece literalele de șir (literal, șirurile citate) există într-o zonă de memorie doar pentru citire, trebuie să specificăm const aici pentru a preveni accesele nedorite care pot bloca programul.
2. Folosind o matrice 2D
O matrice 2-D este cea mai simplă formă a unei matrice multidimensionale în care stochează datele într-o formă tabelară. Această metodă este utilă atunci când lungimea tuturor șirurilor este cunoscută și se dorește o anumită amprentă de memorie. Spațiul pentru șiruri va fi alocat într-un singur bloc
Exemplu:
C++
// C++ program to demonstrate> // array of strings using> // 2D character array> #include> // Driver code> int> main()> {> >// Initialize 2D array> >char> colour[4][10]> >= {>'Blue'>,>'Red'>,>'Orange'>,>'Yellow'> };> >// Printing Strings stored in 2D array> >for> (>int> i = 0; i <4; i++)> >std::cout << colour[i] <<>'
'>;> >return> 0;> }> |
>
>
obiect la json în javaIeșire
Blue Red Orange Yellow>
Explicaţie:
- Atât numărul de șiruri, cât și dimensiunea șirurilor sunt fixe. Cele 4, din nou, pot fi omise, iar dimensiunea adecvată va fi calculată de compilator. A doua dimensiune, totuși, trebuie dată (în acest caz, 10), astfel încât compilatorul să poată alege un aspect de memorie adecvat.
- Fiecare șir poate fi modificat, dar va ocupa întregul spațiu dat de a doua dimensiune. Fiecare va fi așezat unul lângă celălalt în memorie și nu se poate schimba dimensiunea.
- Uneori, controlul asupra amprentei memoriei este de dorit, iar acest lucru va aloca o regiune de memorie cu un aspect fix, obișnuit.
3. Folosind clasa String
Șirul STL sau clasa string poate fi folosit pentru a crea o matrice de șiruri mutabile. În această metodă, dimensiunea șirului nu este fixă, iar șirurile pot fi modificate, ceea ce îl face, într-un fel, să fie dinamic în natură. std::string poate fi folosit pentru a crea o matrice de șiruri folosind funcții încorporate.
Exemplu:
C++
este grasime proteica
// C++ program to demonstrate> // array of strings using> // string class> #include> #include> // Driver code> int> main()> {> >// Initialize String Array> >std::string colour[4]> >= {>'Blue'>,>'Red'>,>'Orange'>,>'Yellow'> };> >// Print Strings> >for> (>int> i = 0; i <4; i++)> >std::cout << colour[i] <<>'
'>;> }> |
>
>Ieșire
Blue Red Orange Yellow>
Explicaţie:
Matricea este de dimensiune fixă, dar nu trebuie să fie. Din nou, cele 4 de aici pot fi omise, iar compilatorul va determina dimensiunea adecvată a matricei. Șirurile sunt, de asemenea, mutabile, permițându-le să fie schimbate.
4. Folosind clasa vectorială
A vector este o matrice dinamică care își dublează dimensiunea ori de câte ori este adăugat un nou caracter care depășește limita. Vectorul container STL poate fi folosit pentru a aloca dinamic o matrice care poate varia în dimensiune.
Acest lucru este utilizabil numai în C++, deoarece C nu are clase. Rețineți că sintaxa listei de inițializare necesită aici un compilator care acceptă standardul C++ 2011 și, deși este destul de probabil să o facă compilatorul dvs., este ceva de care trebuie să fiți conștient.
Exemplu:
C++
convenția de nume java
// C++ program to demonstrate> // array of strings using> // vector class> #include> #include> #include> // Driver code> int> main()> {> >// Declaring Vector of String type> >// Values can be added here using> >// initializer-list> >// syntax> >std::vector colour{>'Blue'>,>'Red'>,> >'Orange'>};> >// Strings can be added at any time> >// with push_back> >colour.push_back(>'Yellow'>);> >// Print Strings stored in Vector> >for> (>int> i = 0; i std::cout << colour[i] << '
'; }> |
>
>Ieșire
Blue Red Orange Yellow>
Explicaţie:
- Vectorii sunt matrice dinamice și vă permit să adăugați și să eliminați elemente în orice moment.
- Orice tip sau clasă poate fi folosit în vectori, dar un vector dat poate conține doar un tip.
5. Utilizarea clasei Array
O matrice este un amestec omogen de date care este stocat continuu în spațiul de memorie. Matricea de containere STL poate fi utilizată pentru a aloca o matrice de dimensiune fixă. Poate fi folosit foarte similar cu un vector, dar dimensiunea este întotdeauna fixă.
Exemplu:
C++
// C++ program to demonstrate> // array of string using STL array> #include> #include> #include> // Driver code> int> main()> {> >// Initialize array> >std::array colour{>'Blue'>,>'Red'>,> >'Orange'>,>'Yellow'>};> >// Printing Strings stored in array> >for> (>int> i = 0; i <4; i++)> >std::cout << colour[i] <<>'
'>;> >return> 0;> }> |
>
>Ieșire
Blue Red Orange Yellow>
Acestea nu sunt în niciun caz singurele modalități de a face o colecție de șiruri. C++ oferă mai multe clase de containere, fiecare dintre ele având diverse compromisuri și caracteristici, și toate există pentru a îndeplini cerințele pe care le veți avea în proiectele dvs. Explorează și distrează-te!
hashmap
Concluzie: Dintre toate metodele, Vector pare să fie cea mai bună modalitate de a crea o matrice de șiruri de caractere în C++.
s.