Skip to content

Stringhe

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.

#include <iostream>
#include <string>
using namespace std;
string nome = "Alice";
string saluto = "Ciao, mondo!";
string vuota = ""; // stringa senza nessun carattere

Le stringhe usano le virgolette doppie ". Le virgolette singole ' sono per i caratteri singoli (char).

Puoi unire due stringhe con +:

string nome = "Alice";
string cognome = "Bianchi";
string nomeCompleto = nome + " " + cognome;
cout << nomeCompleto << endl; // Alice Bianchi

Per aggiungere qualcosa in coda a una stringa:

string frase = "Ciao";
frase += ", mondo";
frase += "!";
cout << frase << endl; // Ciao, mondo!

Il metodo .length() restituisce quanti caratteri ha la stringa:

string nome = "Alice";
cout << nome.length() << endl; // 5

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 carattere
cout << nome[1] << endl; // l
cout << nome[4] << endl; // e — quinto (e ultimo) carattere
// Modifica del primo carattere
nome[0] = 'E';
cout << nome << endl; // Elice

Puoi confrontare stringhe con gli operatori normali:

string a = "ciao";
string b = "ciao";
string c = "hello";
cout << (a == b) << endl; // 1 — sono uguali
cout << (a == c) << endl; // 0 — sono diverse
cout << (a != c) << endl; // 1 — sono diverse

Attenzione: il confronto distingue maiuscole e minuscole. "Ciao" e "ciao" sono considerate diverse.

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::npos
if (frase.find("xyz") == string::npos) {
cout << "Non trovato" << endl;
}

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; // mondo

Per trasformare un numero in stringa (utile per concatenarlo):

int eta = 16;
string etaStr = to_string(eta);
cout << "Hai " + etaStr + " anni." << endl;

Per trasformare una stringa che contiene un numero in un valore numerico:

string numStr = "42";
int num = stoi(numStr); // da stringa a int
cout << num + 1 << endl; // 43
string decimaleStr = "3.14";
double dec = stod(decimaleStr); // da stringa a double

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;
// Controlla se la stringa è vuota
string vuota = "";
cout << vuota.empty() << endl; // 1 (true)
// Trova la posizione di un carattere
string nome = "Alice";
cout << nome.find('l') << endl; // 1
// Sostituisce una porzione
string s = "Ciao, mondo!";
s.replace(6, 5, "Alice"); // sostituisce 5 caratteri dalla posizione 6
cout << s << endl; // Ciao, Alice!
// Inserisce del testo in una posizione
string str = "Ciao!";
str.insert(4, ", mondo");
cout << str << endl; // Ciao, mondo!
#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;
}