Stringhe
Lavorare con il testo in C++
Section titled “Lavorare con il testo in C++”I programmi lavorano con parole, nomi, frasi, URL, messaggi… non solo numeri. Le stringhe sono il modo in cui il programma lavora con il testo.
In C++ moderno si usa il tipo string, che rende il lavoro con il testo semplice e sicuro.
Includere la libreria
Section titled “Includere la libreria”#include <iostream>#include <string>using namespace std;Creare una stringa
Section titled “Creare una stringa”string nome = "Alice";string saluto = "Ciao, mondo!";string vuota = ""; // stringa senza nessun carattereLe stringhe usano le virgolette doppie ". Le virgolette singole ' sono per i caratteri singoli (char).
Unire stringhe: concatenazione
Section titled “Unire stringhe: concatenazione”Puoi unire due stringhe con +:
string nome = "Alice";string cognome = "Bianchi";string nomeCompleto = nome + " " + cognome;cout << nomeCompleto << endl; // Alice BianchiPer aggiungere qualcosa in coda a una stringa:
string frase = "Ciao";frase += ", mondo";frase += "!";cout << frase << endl; // Ciao, mondo!Lunghezza
Section titled “Lunghezza”Il metodo .length() restituisce quanti caratteri ha la stringa:
string nome = "Alice";cout << nome.length() << endl; // 5Accedere a un singolo carattere
Section titled “Accedere a un singolo carattere”Come gli array, puoi leggere o modificare un singolo carattere usando l’indice tra []. Gli indici partono da 0:
string nome = "Alice";cout << nome[0] << endl; // A — primo caratterecout << nome[1] << endl; // lcout << nome[4] << endl; // e — quinto (e ultimo) carattere
// Modifica del primo caratterenome[0] = 'E';cout << nome << endl; // EliceConfrontare stringhe
Section titled “Confrontare stringhe”Puoi confrontare stringhe con gli operatori normali:
string a = "ciao";string b = "ciao";string c = "hello";
cout << (a == b) << endl; // 1 — sono ugualicout << (a == c) << endl; // 0 — sono diversecout << (a != c) << endl; // 1 — sono diverseAttenzione: il confronto distingue maiuscole e minuscole. "Ciao" e "ciao" sono considerate diverse.
Cercare dentro una stringa: find()
Section titled “Cercare dentro una stringa: find()”Il metodo find() cerca una parola o un carattere e restituisce la posizione in cui si trova:
string frase = "Ciao, mondo!";int pos = frase.find("mondo");cout << pos << endl; // 6 — "mondo" inizia alla posizione 6
// Se non trova niente, restituisce string::nposif (frase.find("xyz") == string::npos) { cout << "Non trovato" << endl;}Estrarre una parte: substr()
Section titled “Estrarre una parte: substr()”Il metodo substr() estrae una porzione di stringa:
string frase = "Ciao, mondo!";// substr(posizione_di_inizio, lunghezza)string parte = frase.substr(6, 5);cout << parte << endl; // mondoConvertire numeri in stringhe
Section titled “Convertire numeri in stringhe”Per trasformare un numero in stringa (utile per concatenarlo):
int eta = 16;string etaStr = to_string(eta);cout << "Hai " + etaStr + " anni." << endl;Convertire stringhe in numeri
Section titled “Convertire stringhe in numeri”Per trasformare una stringa che contiene un numero in un valore numerico:
string numStr = "42";int num = stoi(numStr); // da stringa a intcout << num + 1 << endl; // 43
string decimaleStr = "3.14";double dec = stod(decimaleStr); // da stringa a doubleLeggere stringhe con spazi
Section titled “Leggere stringhe con spazi”cin >> si ferma al primo spazio. Per leggere tutta la riga usa getline():
string nome;cout << "Inserisci il tuo nome completo: ";getline(cin, nome);cout << "Ciao, " << nome << "!" << endl;Altri metodi utili
Section titled “Altri metodi utili”// Controlla se la stringa è vuotastring vuota = "";cout << vuota.empty() << endl; // 1 (true)
// Trova la posizione di un caratterestring nome = "Alice";cout << nome.find('l') << endl; // 1
// Sostituisce una porzionestring s = "Ciao, mondo!";s.replace(6, 5, "Alice"); // sostituisce 5 caratteri dalla posizione 6cout << s << endl; // Ciao, Alice!
// Inserisce del testo in una posizionestring str = "Ciao!";str.insert(4, ", mondo");cout << str << endl; // Ciao, mondo!Esempio pratico
Section titled “Esempio pratico”#include <iostream>#include <string>using namespace std;
int main() { string nome, cognome;
cout << "Inserisci il nome: "; cin >> nome; cout << "Inserisci il cognome: "; cin >> cognome;
string nomeCompleto = nome + " " + cognome;
cout << endl; cout << "Nome completo: " << nomeCompleto << endl; cout << "Lunghezza: " << nomeCompleto.length() << " caratteri" << endl; cout << "Iniziale nome: " << nome[0] << endl; cout << "Iniziale cognome: " << cognome[0] << endl;
// Conta le vocali nel nome completo string vocali = "aeiouAEIOU"; int contaVocali = 0; for (char c : nomeCompleto) { if (vocali.find(c) != string::npos) { contaVocali++; } } cout << "Numero di vocali: " << contaVocali << endl;
return 0;}