Para programadores
Contador de caracteres C++: conte os caracteres de uma cadeia
Exemplos de código em C++ prontos para contar caracteres: todos os caracteres, os caracteres sem espaços e a contagem de palavras. Além disso, notas importantes sobre UTF-8. Também pode experimentar a contagem diretamente no navegador.
Limite de caracteres ou objetivo
Contado com espaços. Altere a base da contagem com o botão abaixo.
Limites de caracteres por canal (caracteres com espaços)
Mostrar análise do texto
Palavras mais frequentes
- Escreva algum texto para ver as palavras mais frequentes.
1. Todos os caracteres de uma cadeia
A forma básica de contar caracteres em C++ é o método size() ou length() da classe std::string. Devolvem o comprimento da cadeia em bytes. Em texto ASCII puro, o número de bytes coincide com o número de caracteres.
// Todos os caracteres (em bytes)
#include <iostream>
#include <string>
int main() {
std::string texto;
std::getline(std::cin, texto);
std::cout << "Caracteres: " << texto.size() << "\n";
return 0;
}
2. Caracteres sem espaços
Quando quiser contar apenas os caracteres reais, percorra a cadeia e ignore os espaços em branco com a função std::isspace. Assim obtém o equivalente do valor sem espaços do contador da página.
// Caracteres sem espaços
#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 << "Sem espacos: " << n << "\n";
return 0;
}
3. Contagem de palavras
As palavras contam-se comodamente com um fluxo std::istringstream, que divide o texto em palavras pelos espaços.
// Contagem de palavras
#include <iostream>
#include <sstream>
#include <string>
int main() {
std::string linha; std::getline(std::cin, linha);
std::istringstream iss(linha);
std::string palavra; int palavras = 0;
while (iss >> palavra) palavras++;
std::cout << "Palavras: " << palavras << "\n";
return 0;
}
UTF-8: os bytes não são o mesmo que os caracteres visíveis
Esta é a maior armadilha com o texto que não é ASCII. std::string::size() devolve o número de bytes, não o número de caracteres visíveis. Na codificação UTF-8, letras como á, é, í e ç ocupam dois bytes e muitos emojis até quatro. É por isso que a palavra "café" pode parecer que tem cinco bytes ainda que os seus caracteres visíveis sejam quatro.
Lembre-se: se quiser contar os caracteres visíveis de um texto UTF-8, tem de interpretar a codificação; por exemplo, contar apenas os bytes que não começam pelo padrão de bits 10xxxxxx. O contador do navegador acima usa uma contagem baseada em grafemas, por isso pode comparar o seu resultado com o seu código.
Contagens recentes
As contagens são guardadas apenas no seu próprio navegador, para que possa voltar a elas mais tarde. Nunca são enviadas para nenhum servidor.
Perguntas frequentes
Perguntas frequentes
Como conto os caracteres de uma cadeia em C++?
A forma mais simples é usar o método size() ou length() da classe std::string. Devolvem o comprimento da cadeia em bytes. Em texto ASCII isto coincide com o número de caracteres, mas em texto UTF-8 as letras acentuadas e os emojis podem ocupar vários bytes.
Como conto os caracteres sem espaços?
Percorra a cadeia e ignore os espaços, por exemplo verificando isspace(). Também pode remover apenas os espaços normais ou todos os espaços em branco, consoante o que precisar.
Porque é que os caracteres acentuados são contados mal?
std::string mede o comprimento em bytes. Em UTF-8 um carácter acentuado ocupa dois bytes, por isso o número de caracteres visíveis e o número de bytes diferem. Para contar os caracteres visíveis é preciso um tratamento que tenha em conta a codificação.
Posso experimentar a contagem sem um compilador?
Sim. Cole a cadeia no contador acima e verá os caracteres com e sem espaços de imediato no navegador. Assim pode comparar o resultado com a saída do seu código C++.
Outros contadores e guias
Continue com estas ferramentas
Ferramentas e guias ligados internamente que complementam esta página.