Differenza tra array di caratteri e stringa

Autore: Laura McKinney
Data Della Creazione: 1 Aprile 2021
Data Di Aggiornamento: 23 Aprile 2024
Anonim
Tutorial C++ - Lezione 17 - Vettori di caratteri
Video: Tutorial C++ - Lezione 17 - Vettori di caratteri

Contenuto


C ++ supporta entrambi, Serie di caratteri e stringa, poiché C ++ ha notevoli vantaggi nell'usarli entrambi. Ma l'incapacità di operare su array di caratteri aumenta lo sviluppo della stringa di classe. Sia una matrice di caratteri che una stringa contengono la sequenza di caratteri. Ma la differenza fondamentale tra array di caratteri e stringa è che la "matrice di caratteri" non può essere utilizzata con operatori standard, mentre gli oggetti "stringa" possono essere gestiti con operatori standard. Studiamo le altre differenze tra una matrice di caratteri e una stringa.

  1. Tabella di comparazione
  2. Definizione
  3. Differenze chiave
  4. Conclusione

Tabella di comparazione

Base per il confrontoArray di caratteriCorda
Di baseL'array di caratteri è una raccolta di variabili, di tipo di dati carattere.String è la classe e le variabili di stringa sono l'oggetto della classe "stringa".
Sintassichar nome_array;stringa string_name;
indicizzazioneUn singolo personaggio in una matrice di caratteri è accessibile dal suo indice nella matrice.Nella stringa è possibile accedere al carattere particolare con la funzione "nome_stringa.charAt (indice)".
Tipo di datiUna matrice di caratteri non definisce un tipo di dati.Una stringa definisce un tipo di dati in C ++.
operatoriGli operatori in C ++ non possono essere applicati sull'array di caratteri.È possibile applicare l'operatore C ++ standard sulla stringa.
ConfineI confini della matrice sono facilmente superabili.I confini non supereranno.
AccessoAccesso veloce.Accesso lento.


Definizione di array di caratteri


Una matrice di caratteri è una raccolta delle variabili del tipo di dati "char"; può essere una matrice unidimensionale o una matrice bidimensionale. Si chiama anche "stringa terminata null". Una matrice di caratteri è una sequenza di caratteri archiviati in indirizzi di memoria consecutivi. In una matrice di caratteri, è possibile accedere a un determinato carattere tramite il suo indice. Un "carattere Null" termina la matrice di caratteri ".

Facciamo un esempio di array di caratteri: -

nome char = {A, j, a, y, 0}; o char name = "Ajay";

Qui, "char" è un tipo di dati carattere, "name" è un nome variabile della matrice di caratteri. Avevo mostrato due modi per inizializzare l'array di caratteri. Nel primo metodo, il null viene esplicitamente menzionato e nel secondo metodo, il compilatore inserisce automaticamente il null.


La fine della stringa è sempre un carattere null; è il carattere finale dell'array di caratteri. Un array di caratteri non è un tipo di dati incorporato; creiamo una matrice di caratteri dichiarandola. Non è possibile applicare operatori standard su una matrice di caratteri. Per operare su array di caratteri ci sono alcune funzioni integrate come, (strlen (), strlwr (), strupr (), strcat ()). Poiché gli operatori standard non possono essere applicati a una matrice di caratteri, non possono prendere parte a nessuna espressione.

È anche possibile creare il puntatore a un array di caratteri.

Comprendiamolo con un esempio.

char s1 = "Ciao"; char s2 = "Signore"; s1 = s1 + s2; // non è possibile applicare operatori di errore s2 = s1; // errore Puntatore caratteri char * s = "Morning"; char * p; p = s; // esegue

Nell'esempio sopra, avevamo dichiarato due array di caratteri s1, s2 e due puntatori di caratteri s e p. Gli array di caratteri s1 e s2 sono inizializzati, possiamo vedere che né l'operatore di addizione (+) né l'operatore di assegnazione lavorano sull'array di caratteri. Ma un puntatore carattere può essere assegnato a un altro puntatore carattere.

Ricorda che una volta inizializzato l'array di caratteri, non può essere inizializzato nuovamente su un altro set di caratteri. L'accesso a una matrice di caratteri o una stringa con terminazione nulla è rapido rispetto alla stringa in C ++.

Definizione di stringa

Una stringa non è un tipo di dati incorporato di C ++. È un oggetto di classe di tipo "stringa". Come in C ++, creare una classe è come creare un "tipo". La classe "stringa" fa parte della libreria C ++. Contiene l'insieme di caratteri o l'insieme di caratteri nel suo insieme. Ci sono tre ragioni alla base dello sviluppo di una classe di stringhe standard.

  • Primo è "coerenza", le matrici di caratteri non sono tipi di dati a sé stanti.
  • Secondo è "convenienza", non è possibile utilizzare operatori standard su una matrice di caratteri.
  • Terzo è "sicurezza", i confini dell'array sono facilmente superabili.

Cerchiamo di capire le stringhe con un esempio.

stringa s1; s1 = "Ciao"; stringa s2 ("Buongiorno"); string s3 = "Hennery"; stringa s4;

Nella dichiarazione sopra, vengono dichiarate quattro variabili stringa o oggetti (s1, s2, s3, s4). Nella dichiarazione sopra, avevo mostrato tre modi per inizializzare la stringa. La stringa s1 viene dichiarata e quindi inizializzata separatamente. La stringa s2 è inizializzata dal costruttore della classe "String". La stringa s3 viene inizializzata al momento della sua dichiarazione come fa il normale tipo di dati. Possiamo applicare l'operatore standard alle variabili di stringa.

s4 = s1; // assegnazione di un oggetto stringa ad un altro s4 = s1 + s2; // aggiungendo due stringhe e memorizzando il risultato nella terza stringa if (s3> s2) // confrontando due stringhe di stringhe s5 (s1); creazione di un nuovo oggetto stringa utilizzando l'oggetto stringa esistente

Nel codice sopra, vari operatori vengono applicati su una stringa e vengono eseguite varie operazioni. La prima istruzione copia un oggetto stringa in un altro oggetto stringa. Nella seconda istruzione, due stringhe sono concatenate e memorizzate in una terza stringa. Nella terza istruzione, vengono confrontate due stringhe. Nella quarta istruzione, viene creato un nuovo oggetto stringa utilizzando l'oggetto stringa già esistente.

L'accesso alla stringa è lento rispetto a un array di caratteri o a una stringa terminata nulla.

Differenze chiave tra array di caratteri e stringa

  1. Una matrice di caratteri è una raccolta di variabili che sono di tipo di dati carattere. String è una classe che viene istanziata per dichiarare le stringhe.
  2. Utilizzando il valore dell'indice è possibile accedere a un carattere da una matrice di caratteri. D'altra parte, se si desidera accedere a un determinato carattere in una stringa, è possibile accedervi mediante la funzione string’s_name.charAt (indice).
  3. Poiché un array non è un tipo di dati allo stesso modo, anche un carattere non è un tipo di dati. D'altra parte, essendo String un atto di classe come tipo di riferimento, si può dire che String sia un tipo di dati.
  4. Non è possibile applicare alcun operatore su un array di caratteri, mentre è possibile applicare operatori su String.
  5. Essere un array di caratteri array ha una lunghezza fissa e i suoi confini possono essere facilmente superati. Dove String non ha limiti.
  6. Gli elementi dell'array vengono archiviati in una posizione di memoria contigua, pertanto è possibile accedervi più rapidamente della variabile stringa.

Conclusione:

L'impossibilità di operare su array di caratteri ha aumentato lo sviluppo della classe di stringhe standard.