logo

Stringhe in C++

Le stringhe C++ sono sequenze di caratteri archiviate in un array di caratteri. Le stringhe vengono utilizzate per memorizzare parole e testo. Vengono utilizzati anche per memorizzare dati, come numeri e altri tipi di informazioni. Le stringhe in C++ possono essere definite utilizzando il metodo classe std::string o il Matrici di caratteri in stile C.

Stringhe in C++

1. Corde stile C

Queste stringhe vengono memorizzate come il vecchio array di caratteri terminato da a carattere nullo ' ' . Sono il tipo di stringhe che il C++ ha ereditato dal linguaggio C.



Sintassi:

char str[] = 'techcodeview.com';>

Esempio:

C++




// C++ Program to demonstrate strings> #include> using> namespace> std;> int> main()> {> >char> s[] =>'techcodeview.com'>;> >cout << s << endl;> >return> 0;> }>

>

>

Produzione

techcodeview.com>

2. Classe std::string

Questi sono i nuovi tipi di stringhe introdotti in C++ come classe std::string definita all'interno del file di intestazione. Ciò offre molti vantaggi rispetto alle stringhe convenzionali in stile C come dimensione dinamica, funzioni membro, ecc.

Sintassi:

std::string str('techcodeview.com');>

Esempio:

C++




// C++ program to create std::string objects> #include> using> namespace> std;> int> main()> {> >string str(>'techcodeview.com'>);> >cout << str;> >return> 0;> }>

>

>

Produzione

techcodeview.com>

Un altro modo per creare stringhe con lo stesso carattere che si ripetono ancora e ancora.

Sintassi:

std::string str(number,character);>

Esempio:

C++




#include> using> namespace> std;> int> main()> {> >string str(5,>'g'>);> >cout << str;> >return> 0;> }>

>

>

Produzione:

ggggg>

Modi per definire una stringa in C++

Le stringhe possono essere definite in diversi modi in C++. È possibile accedere alle stringhe dalla libreria standard utilizzando la classe string. Gli array di caratteri possono essere utilizzati anche per definire stringhe. String fornisce un ricco set di funzionalità, come la ricerca e la manipolazione, che sono metodi comunemente utilizzati. Nonostante sia meno avanzato della classe string, questo metodo è ancora ampiamente utilizzato, poiché più efficiente e più facile da usare. I modi per definire una stringa in C++ sono:

  • Utilizzando la parola chiave String
  • Utilizzo di stringhe in stile C

1. Utilizzo della parola chiave stringa

È più conveniente definire una stringa con la parola chiave string invece di utilizzare la parola chiave array perché è facile da scrivere e da comprendere.

Sintassi:

string s = 'techcodeview.com'; string s('techcodeview.com');>

Esempio:

C++




// C++ Program to demonstrate use of string keyword> #include> using> namespace> std;> int> main()> {> >string s =>'techcodeview.com'>;> >string str(>'techcodeview.com'>);> >cout <<>'s = '> << s << endl;> >cout <<>'str = '> << str << endl;> >return> 0;> }>

>

>

Produzione

s = techcodeview.com str = techcodeview.com>

2. Utilizzo di stringhe in stile C

Utilizzo delle funzioni delle librerie di stringhe in stile C come strcpy(), strcmp() e strcat() per definire le stringhe. Questo metodo è più complesso e non così diffuso come gli altri due, ma può essere utile quando si ha a che fare con codice legacy o quando sono necessarie prestazioni.

char s[] = {'g', 'f', 'g', ' '}; char s[4] = {'g', 'f', 'g', ' '}; char s[4] = 'gfg'; char s[] = 'gfg';>

Esempio:

C++




// C++ Program to demonstrate C-style string declaration> #include> using> namespace> std;> int> main()> {> >char> s1[] = {>'g'>,>'f'>,>'g'>,>' '> };> >char> s2[4] = {>'g'>,>'f'>,>'g'>,>' '> };> >char> s3[4] =>'gfg'>;> >char> s4[] =>'gfg'>;> >cout <<>'s1 = '> << s1 << endl;> >cout <<>'s2 = '> << s2 << endl;> >cout <<>'s3 = '> << s3 << endl;> >cout <<>'s4 = '> << s4 << endl;> >return> 0;> }>

>

>

Produzione

s1 = gfg s2 = gfg s3 = gfg s4 = gfg>

Un altro esempio di stringa in stile C:

C++




#include> using> namespace> std;> int> main()> {> >string S =>'Geeeks for Geeks'>;> >cout <<>'Your string is= '>;> >cout << S << endl;> >return> 0;> }>

>

>

Produzione

Your string is= Geeeks for Geeks>

Come prendere l'input di stringa in C++

L'input di stringa significa accettare una stringa da un utente. Nel C++. Abbiamo diversi tipi di input da parte dell'utente che dipendono dalla stringa. Il modo più comune è ricevere input con mangiare parola chiave con l'operatore di estrazione (>>) in C++. I metodi per prendere una stringa come input sono:

  • mangiare
  • getline
  • stringstream

1. Utilizzando Cin

Il modo più semplice per ricevere l'input di una stringa è utilizzare il metodo mangiare comando insieme all'operatore di estrazione del flusso (>>).

Sintassi:

cin>>s;>

Esempio:

C++




onclick js
// C++ Program to demonstrate string input using cin> #include> using> namespace> std;> int> main() {> >string s;> > >cout<<>'Enter String'>< cin>>s; cout<<'String is: '< return 0; }>

>

>

Produzione

Enter String String is:>

Produzione:

Enter String techcodeview.com String is: techcodeview.com>

2. Utilizzando getline

IL funzione getline() in C++ viene utilizzato per leggere una stringa da un flusso di input. È dichiarato nel file di intestazione.

Sintassi:

getline(cin,s);>

Esempio:

C++




// C++ Program to demonstrate use of getline function> #include> using> namespace> std;> int> main()> {> >string s;> >cout <<>'Enter String'> << endl;> >getline(cin, s);> >cout <<>'String is: '> << s << endl;> >return> 0;> }>

>

>

Produzione

Enter String String is:>

Produzione:

Enter String techcodeview.com String is: techcodeview.com>

3. Utilizzo di stringstream

IL classe stringstream in C++ viene utilizzato per accettare più stringhe come input contemporaneamente.

Sintassi:

stringstream stringstream_object(string_name);>

Esempio:

C++




// C++ Program to demonstrate use of stringstream object> #include> #include> #include> using> namespace> std;> int> main()> {> >string s =>' techcodeview.com to the Moon '>;> >stringstream obj(s);> >// string to store words individually> >string temp;> >//>> l'operatore leggerà dall'oggetto stringstream> >while> (obj>> temperatura) {> >cout << temp << endl;> >}> >return> 0;> }>

>

>

Produzione

techcodeview.com to the Moon>

Come passare le stringhe alle funzioni?

Allo stesso modo in cui passiamo un array a una funzione, le stringhe in C++ possono essere passate alle funzioni come array di caratteri. Ecco un programma di esempio:

Esempio:

C++




// C++ Program to print string using function> #include> using> namespace> std;> void> print_string(string s)> {> >cout <<>'Passed String is: '> << s << endl;> >return>;> }> int> main()> {> >string s =>'techcodeview.com'>;> >print_string(s);> >return> 0;> }>

>

>

Produzione

Passed String is: techcodeview.com>

Puntatori e stringhe

I puntatori in C++ sono rappresentazioni simboliche di indirizzi. Consentono ai programmi di simulare call-by-reference nonché di creare e manipolare strutture di dati dinamiche. Utilizzando i puntatori possiamo ottenere il primo carattere della stringa, che è l'indirizzo iniziale della stringa. Come mostrato di seguito, è possibile accedere e stampare la stringa data tramite i puntatori.

Esempio:

C++




// C++ Program to print string using pointers> #include> using> namespace> std;> int> main()> {> >string s =>'Geeksforgeeks'>;> >// pointer variable declared to store the starting> >// address of the string> >char>* p = &s[0];> >// this loop will execute and print the character till> >// the character value is null this loop will execute and> >// print the characters> >while> (*p !=>' '>) {> >cout << *p;> >p++;> >}> >cout << endl;> >return> 0;> }>

>

>

Produzione

logica di trasferimento dei registri
Geeksforgeeks>

Differenza tra array di stringhe e caratteri in C++

La differenza principale tra una stringa e un array di caratteri è che le stringhe sono immutabili, mentre gli array di caratteri no.

Corda

Matrice di caratteri

Le stringhe definiscono oggetti che possono essere rappresentati come flussi di stringhe. Il carattere null termina un array di caratteri.
Non si verifica alcun decadimento dell'array nelle stringhe poiché le stringhe sono rappresentate come oggetti.

La minaccia di

decadimento dell'array

è presente nel caso dell'array di caratteri

Una classe string fornisce numerose funzioni per manipolare le stringhe. Gli array di caratteri non offrono funzioni integrate per manipolare le stringhe.
La memoria viene allocata dinamicamente. La dimensione dell'array di caratteri deve essere allocata staticamente.

Scopri di più su differenza tra stringhe e matrici di caratteri in C++

Funzioni di stringa C++

C++ fornisce alcune funzioni integrate utilizzate per la manipolazione delle stringhe, come le funzioni strcpy() e strcat() per copiare e concatenare le stringhe. Alcuni di loro sono:

Funzione

Descrizione

lunghezza() Questa funzione restituisce la lunghezza della stringa.
scambio() Questa funzione viene utilizzata per scambiare i valori di 2 stringhe.
misurare() Utilizzato per trovare la dimensione della stringa
ridimensionare() Questa funzione viene utilizzata per ridimensionare la lunghezza della stringa fino al numero di caratteri specificato.
Trovare() Utilizzato per trovare la stringa che viene passata nei parametri
respingere() Questa funzione viene utilizzata per inserire il carattere passato alla fine della stringa
pop_back() Questa funzione viene utilizzata per estrarre l'ultimo carattere dalla stringa
chiaro() Questa funzione viene utilizzata per rimuovere tutti gli elementi della stringa.
strncmp() Questa funzione confronta al massimo i primi num byte di entrambe le stringhe passate.
strncpy() Questa funzione è simile alla funzione strcpy(), tranne per il fatto che vengono copiati al massimo n byte di src
strrchr() Questa funzione individua l'ultima occorrenza di un carattere nella stringa.
rotto() Questa funzione aggiunge una copia della stringa di origine alla fine della stringa di destinazione
Trovare() Questa funzione viene utilizzata per cercare una determinata sottostringa all'interno di una stringa e restituisce la posizione del primo carattere della sottostringa.
sostituire() Questa funzione viene utilizzata per sostituire ogni elemento nell'intervallo [primo, ultimo) uguale al vecchio valore con il nuovo valore.
sottostr() Questa funzione viene utilizzata per creare una sottostringa da una determinata stringa.
confrontare() Questa funzione viene utilizzata per confrontare due stringhe e restituisce il risultato sotto forma di numero intero.
cancellare() Questa funzione viene utilizzata per rimuovere una determinata parte di una stringa.

Funzioni iteratore di stringhe C++

In C++ le funzioni iteratrici di stringa integrate forniscono al programmatore un modo semplice per modificare e attraversare elementi di stringa. Queste funzioni sono:

Funzioni Descrizione
inizio() Questa funzione restituisce un iteratore che punta all'inizio della stringa.
FINE() Questa funzione restituisce un iteratore che punta alla fine della stringa.
trova() Questa funzione viene utilizzata per trovare l'ultima occorrenza della stringa.
rbegin() Questa funzione restituisce un iteratore inverso che punta alla fine della stringa.
rendere() Questa funzione restituisce un iteratore inverso che punta all'inizio della stringa.
cbegin() Questa funzione restituisce un const_iterator che punta all'inizio della stringa.
alcuni() Questa funzione restituisce un const_iterator che punta alla fine della stringa.
crbegin() Questa funzione restituisce un const_reverse_iterator che punta alla fine della stringa.
cred() Questa funzione restituisce un const_reverse_iterator che punta all'inizio della stringa.

Esempio:

C++




// C++ Program to demonstrate string iterator functions> #include> using> namespace> std;> int> main()> {> >// declaring an iterator> >string::iterator itr;> >// declaring a reverse iterator> >string::reverse_iterator rit;> >string s =>'techcodeview.com'>;> >itr = s.begin();> > >cout <<>'Pointing to the start of the string: '> << *itr<< endl;> >itr = s.end() - 1;> >cout <<>'Pointing to the end of the string: '> << *itr << endl;> >rit = s.rbegin();> >cout <<>'Pointing to the last character of the string: '> << *rit << endl;> >rit = s.rend() - 1;> >cout <<>'Pointing to the first character of the string: '> << *rit << endl;> >return> 0;> }>

>

>

Produzione

Pointing to the start of the string: G Pointing to the end of the string: s Pointing to the last character of the string: s Pointing to the first character of the string: G>

Funzioni di capacità delle stringhe

In C++, le funzioni di capacità delle stringhe vengono utilizzate per gestire la dimensione e la capacità delle stringhe. Le funzioni primarie della capacità includono:

Funzione Descrizione
lunghezza() Questa funzione viene utilizzata per restituire la dimensione della stringa
capacità() Questa funzione restituisce la capacità allocata alla stringa dal compilatore
ridimensionare() Questa funzione ci permette di aumentare o diminuire la dimensione della stringa
rimpicciolirsi per starci dentro() Questa funzione diminuisce la capacità e la porta pari al minimo.

Esempio:

C++




#include> using> namespace> std;> int> main()> {> >string s =>'techcodeview.com'>;> > >// length function is used to print the length of the string> >cout <<>'The length of the string is '> << s.length() << endl;> > >// capacity function is used to print the capacity of the string> >cout <<>'The capacity of string is '> << s.capacity()<< endl;> > >// the string.resize() function is used to resize the string to 10 characters> >s.resize(10);> > >cout <<>'The string after using resize function is '> << s << endl;> > >s.resize(20);> > >cout <<>'The capacity of string before using shrink_to_fit function is '><< s.capacity() << endl;> > >// shrink to fit function is used to reduce the capacity of the container> >s.shrink_to_fit();> >cout <<>'The capacity of string after using shrink_to_fit function is '><< s.capacity() << endl;> >return> 0;> }>

>

>

Produzione

The length of the string is 13 The capacity of string is 15 The string after using resize function is GeeksforGe The capacity of string before using shrink_to_fit function is 30 The capacity of string...>

In conclusione, questo articolo spiega come è possibile sfidare le stringhe in C++ utilizzando matrici di caratteri e classi di stringhe. La classe string fornisce funzionalità più avanzate, mentre l'array di caratteri fornisce funzionalità di base ma è efficiente e facile da usare. In questo articolo abbiamo anche discusso i vari metodi per ricevere input dall'utente.

Per saperne di più sulla classe std::string, fare riferimento all'articolo – classe std::string in C++