En C++, una cadena sol ser només una matriu de (o una referència/apunta a) caràcters que acaba amb el caràcter NULL ' ‘. Una cadena és una matriu unidimensional de caràcters i una matriu de cadenes és una matriu bidimensional de caràcterson cada fila conté alguna cadena.
A continuació es mostren les 5 maneres diferents de crear una matriu de cadenes en C++:
- Utilitzant Apuntadors
- Utilitzant Matriu 2-D
- Utilitzant el Classe de corda
- Utilitzant el Classe vectorial
- Utilitzant el Classe Array
1. Ús de punters
Els punters són la representació simbòlica d'una adreça. En paraules simples, un punter és quelcom que emmagatzema l'adreça d'una variable en ell. En aquest mètode, es crea una matriu de literals de cadena mitjançant una matriu de punters en quècada punter apunta a una cadena concreta.
Exemple:
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;> }> |
matemàtiques aleatòries java aleatòries
>
>Sortida
Blue Red Orange Yellow>
Explicació:
- El nombre de cadenes és fix, però no cal que ho sigui. El 4 es pot ometre i el compilador calcularà la mida correcta.
- Aquestes cadenes són constants i el seu contingut no es pot canviar. Com que els literals de cadena (literalment, les cadenes citades) existeixen en una àrea de només lectura de la memòria, hem d'especificar const aquí per evitar accessos no desitjats que puguin bloquejar el programa.
2. Utilitzant una matriu 2D
Una matriu 2-D és la forma més senzilla d'una matriu multidimensional en la qual emmagatzema les dades en forma tabular. Aquest mètode és útil quan es coneix la longitud de totes les cadenes i es desitja una empremta de memòria particular. L'espai per a les cadenes s'assignarà en un sol bloc
Exemple:
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;> }> |
>
doble a cadena java
>Sortida
Blue Red Orange Yellow>
Explicació:
- Tant el nombre de cordes com la mida de les cordes són fixes. El 4, de nou, es pot deixar fora, i el compilador calcularà la mida adequada. La segona dimensió, però, s'ha de donar (en aquest cas, 10), perquè el compilador pugui triar una disposició de memòria adequada.
- Cada cadena es pot modificar, però ocuparà tot l'espai donat per la segona dimensió. Cadascun es col·locarà un al costat de l'altre a la memòria i no es pot canviar la mida.
- De vegades, el control sobre la petjada de memòria és desitjable, i això assignarà una regió de memòria amb un disseny normal i fix.
3. Ús de la classe String
La cadena STL o classe de cadena es pot utilitzar per crear una matriu de cadenes mutables. En aquest mètode, la mida de la corda no és fixa i les cordes es poden canviar, cosa que d'alguna manera la fa dinàmica per naturalesa. std::string es pot utilitzar per crear una matriu de cadenes mitjançant funcions integrades.
Exemple:
C++
diferència simètrica
// 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] <<>'
'>;> }> |
>
>Sortida
Blue Red Orange Yellow>
Explicació:
La matriu és de mida fixa, però no cal que ho sigui. De nou, el 4 aquí es pot ometre i el compilador determinarà la mida adequada de la matriu. Les cadenes també són mutables, cosa que permet canviar-les.
4. Utilitzant la classe vectorial
A vector és una matriu dinàmica que duplica la seva mida sempre que s'afegeix un caràcter nou que supera el seu límit. El vector contenidor STL es pot utilitzar per assignar dinàmicament una matriu que pot variar de mida.
Això només es pot utilitzar en C++, ja que C no té classes. Tingueu en compte que aquí la sintaxi de la llista d'inicialitzadors requereix un compilador que admeti l'estàndard C++ 2011 i, tot i que és molt probable que el vostre compilador ho faci, cal tenir en compte.
Exemple:
str.replace a Java
C++
// 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] << '
'; }> |
>
>Sortida
Blue Red Orange Yellow>
Explicació:
- Els vectors són matrius dinàmiques i us permeten afegir i eliminar elements en qualsevol moment.
- Qualsevol tipus o classe es pot utilitzar en vectors, però un vector determinat només pot contenir un tipus.
5. Ús de la classe Array
Una matriu és una barreja homogènia de dades que s'emmagatzemen contínuament a l'espai de memòria. La matriu de contenidors STL es pot utilitzar per assignar una matriu de mida fixa. Es pot utilitzar de manera molt semblant a un vector, però la mida sempre és fixa.
Exemple:
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;> }> |
>
>Sortida
cadena de retall de java
Blue Red Orange Yellow>
Aquestes no són de cap manera les úniques maneres de fer una col·lecció de cordes. C++ ofereix diverses classes de contenidors, cadascuna de les quals té diferents avantatges i característiques, i totes existeixen per cobrir els requisits que tindreu en els vostres projectes. Explora i diverteix-te!
Conclusió: De tots els mètodes, Vector sembla ser la millor manera de crear una matriu de cadenes en C++.
s.