Tutto ciò che devi sapere sulle stringhe in C ++



Questo articolo fornirà una conoscenza dettagliata e completa delle stringhe in C ++ e fornirà anche esempi di varie operazioni.

Il termine indica una sequenza ordinata di caratteri. Una sequenza di caratteri può essere rappresentata utilizzando un oggetto di una classe in C ++. La classe che fornisce una definizione per farlo è chiamata classe String. La classe String memorizza i caratteri come una sequenza di byte con la funzionalità di consentire l'accesso al carattere a byte singolo. In C ++ i delimitatori di inclusione sono doppi apici. In questo articolo 'Stringhe in C ++' tratterò i seguenti argomenti:

Differenza tra classi di stringhe e array di caratteri

Classe di stringa Character Array
La classe String è una classe che definisce oggetti che possono essere rappresentati come un flusso di caratteriL'array di caratteri è semplicemente un array di caratteri.
Nel caso delle stringhe, la memoria viene allocata dinamicamente, quindi è possibile allocare più memoria in fase di esecuzione su richiestaLa dimensione della matrice di caratteri deve essere allocata staticamente, quindi non è possibile allocare più memoria in fase di esecuzione se necessario
La classe String definisce una serie di funzionalità che consentono molteplici operazioni sulle stringhe.L'array di caratteri non offre molte funzioni integrate per manipolare le stringhe
Le stringhe sono più lente rispetto all'implementazione rispetto alla matrice di caratteri.L'implementazione di un array di caratteri è Più veloce.

Dichiarare e inizializzare una stringa in C ++

strings-in-c++L'inizializzazione della stringa in C ++ è piuttosto semplice !. Possiamo usare uno qualsiasi dei seguenti metodi.





utilizzando la stringa std dello spazio dei nomi std_string

o

std :: string std_string
#include using namespace 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 }

Produzione:



Hello by ch Hello by st Hello by std_st

In questo esempio, abbiamo mostrato sia l'array di caratteri (ch) che la stringa clmetodi di inizializzazione ass (st e std_st). Per prima cosa, abbiamo utilizzato il metodo array di caratteri definendo un array di caratteri ch [12] che contiene 12 elementi e termina con un carattere nullo. Nella seconda parte, abbiamo utilizzato un metodo di classe stringa.

Operazioni su stringhe in C ++

Il vantaggio dell'utilizzo della classe string è che ci sono diverse funzioni incorporate in C ++ per manipolarle. Ciò rende la programmazione facile ed efficace. Prendiamo alcune importanti funzioni di manipolazione delle stringhe e comprendiamole guardando alcuni esempi.

Dimensione della stringa: Entrambi i metodi size () e length () possono essere utilizzati per restituire la dimensione dell'oggetto.



costo<< st.length() <

Produzione:

11 11

Concatenazione di stringhe: Possiamo concatenare due o più stringhe semplicemente usando l'operatore + tra di loro

stringa nuova_stringa = st + 'e' + std_st cout<< new_string <

Produzione:

Hello by st e Hello by std_st

Aggiunta di stringhe: La funzione membro della classe .append (stringa) può essere utilizzata per concatenare e aggiungere una stringa in una posizione di carattere specifica nella stringa. Se un programmatore inserisce str.append (str1, p, n), significa che n numero di caratteri dalla posizione p nella stringa str1 verrà aggiunto alla fine di str.

string str = 'Mi piace imparare' string str1 = 'Python, C ++ o C' str.append (str1, 8, 3) cout<< str << endl

Produzione:

Mi piace imparare il C ++

Ricerca di stringhe: Possiamo usare la funzione membro find () per trovare la prima occorrenza di una stringa all'interno di un'altra. find () cercherà l'ago della stringa all'interno del pagliaio a partire dalla posizione pos e restituirà la posizione della prima occorrenza dell'ago. La funzione rfind () funziona in modo simile, tranne per il fatto che restituisce l'ultima occorrenza della stringa passata.

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

Produzione:

4 4 7 4294967295

Il primo comando cout stamperà semplicemente '4' che è l'indice della prima occorrenza di 'o' nella stringa del pagliaio. Se vogliamo la 'o' in 'World', dobbiamo modificare 'pos' in modo che punti oltre la prima occorrenza. haystack.find (needle, 4) restituisce nuovamente 4, mentre haystack.find (needle, 5) restituisce 7. Se la sottostringa non viene trovata, find () restituisce std :: string :: npos.

Npos è un valore speciale uguale al valore massimo rappresentabile dal tipo size_type. Qui è 4294967295. In genere, viene utilizzato come indicatore di fine stringa dalle funzioni che prevedono un indice di stringa o come indicatore di errore dalle funzioni che restituiscono un indice di stringa.

a cosa serve Nagios

Questo semplice codice cerca una stringa per tutte le occorrenze di 'C ++' in str2 e stampa le loro posizioni:

string str2 = 'C ++ è un linguaggio di programmazione orientato agli oggetti e include classi, ereditarietà, polimorfismo, astrazione dei dati e incapsulamento.C ++ consente la gestione delle eccezioni e il sovraccarico di funzioni che non sono possibili in C.C ++ è un linguaggio potente, efficiente e veloce. ' 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 }

Produzione:

Trovata occorrenza di 'C ++' alla posizione 0 Trovata occorrenza di 'C ++' alla posizione 132 Trovata occorrenza di 'C ++' alla posizione 217
#include utilizzando lo spazio dei nomi 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 () // Late binding (RTP) ptr-> fun_3 () // Late binding (RTP) ptr-> fun_4 () // Early binding but this function call is // illegale (produce error) because pointer // is del tipo di base e la funzione è di // classe derivata // p-> fun_4 (5)}

Produzione:

classe base funzione 1 classe derivata funzione 2 classe base funzione 3 classe base funzione 4

Con questo, arriviamo alla fine di questo articolo sulle stringhe in C ++. Spero che tu abbia capito le varie operazioni che possono essere eseguite su di esso. Se desideri saperne di più, dai un'occhiata al Java Training di Edureka, una società di formazione online affidabile. Edureka's I corsi di formazione e certificazione sono progettati per formarti sia sui concetti di base che avanzati su Java insieme a vari framework Java come Hibernate e Spring.

Hai domande per noi? Per favore, menzionalo nella sezione commenti di questo blog e ti risponderemo il prima possibile.