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.

✓ Códigos para copiar✓ Notas sobre UTF-8✓ Experimente no navegador
Caracteres com espaços 0 todos os caracteres visíveis + espaços
Caracteres sem espaços 0 espaços removidos
0
Palavras
0
Frases
0
Parágrafos
0
Linhas
O seu texto nunca é guardado nem enviado para um servidor

Limite de caracteres ou objetivo

Personalizado:
0 / 0 Escolha um limite ou defina o seu

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
Comprimento médio das palavras
0
Palavras / frase
0
Caracteres / frase
0
Palavras únicas
0
Diversidade lexical
0
Tempo de leitura estimado
0 s
Tempo de fala estimado
0 s
Palavra mais longa
–
Espaços
0
Quebras de linha
0
Tabulações
0
Sinais de pontuação
0
Números
0
Ligações
0
Emojis
0

Palavras mais frequentes

  • Escreva algum texto para ver as palavras mais frequentes.
Publicidade

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.

caracteres.cpp
// 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.

sem_espacos.cpp
// 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.

palavras.cpp
// 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.

Publicidade

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++.