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 são contadas 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 seu resultado com 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, conforme o que precisar.
Porque é que os caracteres acentuados são contados mal?
std::string mede o comprimento em bytes. Em UTF-8 um caractere 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.