Per sviluppatori
Contatore di caratteri C++: conta i caratteri di una stringa
Esempi di codice C++ pronti per contare i caratteri: tutti i caratteri, i caratteri senza spazi e il numero di parole. Inoltre importanti note su UTF-8. Puoi anche provare il conteggio direttamente nel browser.
Limite o obiettivo di caratteri
Conteggiati con gli spazi. Cambia la base di conteggio con l'interruttore qui sotto.
Limiti di caratteri per canale (caratteri con spazi)
Mostra l'analisi del testo
Parole più comuni
- Scrivi del testo per vedere le parole più comuni.
1. Tutti i caratteri di una stringa
Il modo di base per contare i caratteri in C++ è il metodo size() o length() della classe std::string. Restituiscono la lunghezza della stringa in byte. In un testo puramente ASCII il numero di byte corrisponde al numero di caratteri.
// Tutti i caratteri (in byte)
#include <iostream>
#include <string>
int main() {
std::string testo;
std::getline(std::cin, testo);
std::cout << "Caratteri: " << testo.size() << "\n";
return 0;
}
2. Caratteri senza spazi
Quando vuoi contare solo i caratteri veri e propri, scorri la stringa e salta gli spazi con la funzione std::isspace. Così ottieni l'equivalente del valore senza spazi del contatore di questa pagina.
// Caratteri senza spazi
#include <iostream>
#include <string>
#include <cctype>
int main() {
std::string t; std::getline(std::cin, t);
int n = 0;
for (unsigned char c : t)
if (!std::isspace(c)) n++;
std::cout << "Senza spazi: " << n << "\n";
return 0;
}
3. Numero di parole
Le parole si contano comodamente con un flusso std::istringstream, che divide il testo in parole in corrispondenza degli spazi.
// Numero di parole
#include <iostream>
#include <sstream>
#include <string>
int main() {
std::string riga; std::getline(std::cin, riga);
std::istringstream iss(riga);
std::string parola; int parole = 0;
while (iss >> parola) parole++;
std::cout << "Parole: " << parole << "\n";
return 0;
}
UTF-8: i byte non sono i caratteri visibili
Questa è la trappola principale con il testo non ASCII. std::string::size() restituisce il numero di byte, non il numero di caratteri visibili. Nella codifica UTF-8 lettere come à, è e ù occupano due byte e molte emoji fino a quattro. Per questo la parola "città" può sembrare di sei byte, anche se i caratteri visibili sono cinque.
Ricorda: se vuoi contare i caratteri visibili di un testo UTF-8, devi interpretare la codifica, per esempio contare solo i byte che non iniziano con lo schema di bit 10xxxxxx. Il contatore nel browser qui sopra usa un conteggio basato sui grafemi, così puoi confrontare il suo risultato con il tuo codice.
Conteggi recenti
I conteggi vengono salvati solo nel tuo browser, così puoi riprenderli più tardi. Nulla viene mai inviato a un server.
FAQ
Domande frequenti
Come conto i caratteri di una stringa in C++?
Il modo più semplice è usare il metodo size() o length() della classe std::string. Restituiscono la lunghezza della stringa in byte. Nei testi ASCII questo corrisponde al numero di caratteri, ma nei testi UTF-8 le lettere accentate e le emoji possono occupare più byte.
Come conto i caratteri senza spazi?
Scorri la stringa e salta gli spazi, per esempio controllando con isspace(). Puoi anche rimuovere solo gli spazi normali o tutti gli spazi vuoti, secondo le tue esigenze.
Perché le lettere accentate vengono contate in modo errato?
std::string misura la lunghezza in byte. In UTF-8 una lettera accentata occupa due byte, quindi il numero di caratteri visibili e il numero di byte differiscono. Per contare i caratteri visibili serve un'elaborazione che tenga conto della codifica.
Posso provare il conteggio senza compilatore?
Sì. Incolla la stringa nel contatore qui sopra e vedrai i caratteri con e senza spazi subito nel browser. Così puoi confrontare il risultato con l'output del tuo codice C++.
Altri contatori e guide
Continua con questi strumenti
Strumenti e guide collegati internamente che completano questa pagina.