Raccomandato, 2024

Scelta Del Redattore

Differenza tra matrice di caratteri e stringa

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

Grafico comparativo

Base per il confrontoArray di personaggiStringa
Di baseL'array di caratteri è una raccolta di variabili, di tipo di dati carattere.La stringa è classe e le variabili di stringa sono l'oggetto della classe "stringa".
Sintassichar nome_array [dimensione];string string_name;
indicizzazioneUn singolo carattere in un array di caratteri è accessibile dal suo indice in array.Nella stringa è possibile accedere al carattere particolare mediante la funzione "string_name.charAt (index)".
Tipo di datiUn array 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 delle matrici sono facilmente superabili.I confini non supereranno.
AccessoAccesso rapido.Accesso lento.


Definizione di matrice di caratteri

Un array di caratteri è una raccolta delle variabili del tipo di dati "char"; può essere un array monodimensionale o un array bidimensionale. È anche chiamato "stringa terminata da null". Una matrice di caratteri è una sequenza di caratteri che vengono memorizzati in indirizzi di memoria consecutivi. In un array di caratteri, è possibile accedere a un determinato carattere dal suo indice. Un "carattere Null" termina l'array di caratteri ".

Facciamo un esempio di array di caratteri: -

 nome char [] = {'A', 'j', 'a', 'y', '\ 0'}; o nome char [] = "Ajay"; 

Qui, "char" è un tipo di dati di carattere, "nome" è un nome di variabile dell'array 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 nullo; è il carattere di terminazione dell'array di caratteri. Un array di caratteri non è un tipo di dati incorporato; creiamo array di caratteri dichiarandolo. Non è possibile applicare operatori standard su un array di caratteri. Per operare su array di caratteri ci sono alcune funzioni built-in come, (strlen (), strlwr (), strupr (), strcat ()). Poiché gli operatori standard non possono essere applicati a un array di caratteri, non possono prendere parte a nessuna espressione.

È anche possibile creare il puntatore del carattere su un array di caratteri.

Comprendiamolo con un esempio.

 char s1 [] = "Ciao"; char s2 [] = "Sir"; s1 = s1 + s2; // gli operatori di errore non possono essere applicati s2 = s1; // error Character pointer char * s = "Morning"; char * p; p = s; // esegue 

Nell'esempio precedente, avevamo dichiarato due array di caratteri s1, s2 e due puntatori di caratteri s e p. L'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 di caratteri può essere assegnato a un altro puntatore di caratteri.

Ricorda che una volta che l'array di caratteri è inizializzato, non può essere nuovamente inizializzato con un altro set di caratteri. L'accesso a una matrice di caratteri oa una stringa terminata da null è veloce rispetto alla stringa in C ++.

Definizione di String

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 "stringa" di classe è una parte della libreria C ++. Detiene l'insieme di carattere o matrice di caratteri nel suo insieme. Ci sono tre ragioni dietro lo sviluppo di una classe di stringhe standard.

  • Il primo è "coerenza", gli array di caratteri non sono tipi di dati a sé stanti.
  • Il secondo è "convenienza", non è possibile utilizzare operatori standard su un array 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 ("Buon giorno"); string s3 = "Hennery"; stringa s4; 

Nella dichiarazione precedente, vengono dichiarate quattro variabili o oggetti stringa (s1, s2, s3, s4). Nella dichiarazione di cui sopra, avevo mostrato tre modi di 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 tipo di dati normale. Possiamo applicare l'operatore standard alle variabili stringa.

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

Nel codice precedente, vari operatori sono 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 una stringa terminata da null.

Differenze chiave tra matrice di caratteri e stringa

  1. Una matrice di caratteri è una raccolta di variabili che sono di tipo di carattere. String è una classe che viene istanziata per dichiarare le stringhe.
  2. Usando il valore dell'indice puoi accedere a un personaggio da un array di caratteri. D'altra parte, se si desidera accedere a un particolare carattere in una stringa, è possibile accedervi tramite la funzione string's_name.charAt (index).
  3. Poiché un array non è un tipo di dati, anche un personaggio non è un tipo di dati. D'altra parte, essendo String un atto di classe come un tipo di riferimento, si può affermare che String è un tipo di dati.
  4. Non è possibile applicare alcun operatore su un array di caratteri mentre, è possibile applicare operatori su String.
  5. Essendo un array di caratteri array ha una lunghezza fissa ei suoi limiti possono essere facilmente superati. Dove String non ha limiti.
  6. Gli elementi dell'array sono memorizzati in una posizione di memoria contigua, quindi è possibile accedervi più rapidamente della variabile stringa.

Conclusione:

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

Top