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
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
Links
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 são contadas 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 seu resultado com 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, 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++.