Développeurs

Compteur de caractères C++ : comptez les caractères d'une chaîne

Des exemples de code en C++ prêts à l'emploi pour compter les caractères : tous les caractères, les caractères sans espaces et le nombre de mots. Ainsi que des remarques importantes sur l'UTF-8. Vous pouvez aussi tester le comptage directement dans le navigateur.

✓ Codes à copier✓ Remarques sur l'UTF-8✓ Testez dans le navigateur
Caractères avec espaces 0 tous les caractères visibles + espaces
Caractères sans espaces 0 espaces supprimés
0
Mots
0
Phrases
0
Paragraphes
0
Lignes
Votre texte n'est jamais stocké ni envoyé à un serveur

Limite de caractères ou objectif

Personnalisé :
0 / 0 Choisissez une limite ou saisissez la vôtre

Compté avec les espaces. Changez la base de comptage avec l'interrupteur ci-dessous.

Limites de caractères par canal (caractères avec espaces)

Afficher l'analyse du texte
Longueur moyenne des mots
0
Mots / phrase
0
Caractères / phrase
0
Mots uniques
0
Diversité lexicale
0
Temps de lecture estimé
0 s
Temps de parole estimé
0 s
Mot le plus long
–
Espaces
0
Sauts de ligne
0
Tabulations
0
Signes de ponctuation
0
Chiffres
0
Liens
0
Émojis
0

Mots les plus fréquents

  • Saisissez du texte pour voir les mots les plus fréquents.
Publicité

1. Tous les caractères d'une chaîne

La façon de base de compter les caractères en C++ est la méthode size() ou length() de la classe std::string. Elles renvoient la longueur de la chaîne en octets. Dans un texte purement ASCII, le nombre d'octets correspond au nombre de caractères.

caracteres.cpp
// Tous les caractères (en octets)
#include <iostream>
#include <string>

int main() {
    std::string texte;
    std::getline(std::cin, texte);
    std::cout << "Caracteres : " << texte.size() << "\n";
    return 0;
}

2. Caractères sans espaces

Lorsque vous voulez compter uniquement les caractères réels, parcourez la chaîne et ignorez les espaces avec la fonction std::isspace. Vous obtenez ainsi l'équivalent de la valeur sans espaces du compteur de la page.

sans_espaces.cpp
// Caracteres sans espaces
#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 << "Sans espaces : " << n << "\n";
    return 0;
}

3. Nombre de mots

Les mots se comptent facilement avec un flux std::istringstream, qui découpe le texte en mots au niveau des espaces.

mots.cpp
// Nombre de mots
#include <iostream>
#include <sstream>
#include <string>

int main() {
    std::string ligne; std::getline(std::cin, ligne);
    std::istringstream iss(ligne);
    std::string mot; int mots = 0;
    while (iss >> mot) mots++;
    std::cout << "Mots : " << mots << "\n";
    return 0;
}

UTF-8 : les octets ne sont pas les caractères visibles

C'est le principal piège avec le texte non ASCII. std::string::size() renvoie le nombre d'octets, pas le nombre de caractères visibles. En codage UTF-8, des lettres comme é, à et ç occupent deux octets et de nombreux emojis jusqu'à quatre. C'est pourquoi le mot "café" peut sembler faire cinq octets alors qu'il ne compte que quatre caractères visibles.

Souvenez-vous : si vous voulez compter les caractères visibles d'un texte UTF-8, vous devez interpréter le codage – par exemple ne compter que les octets qui ne commencent pas par le motif de bits 10xxxxxx. Le compteur du navigateur ci-dessus utilise un comptage fondé sur les graphèmes, ce qui vous permet de comparer son résultat à votre code.

Publicité

Comptages récents

Les comptages sont enregistrés uniquement dans votre propre navigateur pour que vous puissiez y revenir plus tard. Rien n'est jamais envoyé à un serveur.

    FAQ

    Foire aux questions

    Comment compter les caractères d'une chaîne en C++ ?

    La façon la plus simple est d'utiliser la méthode size() ou length() de la classe std::string. Elles renvoient la longueur de la chaîne en octets. Dans un texte ASCII, cela correspond au nombre de caractères, mais dans un texte UTF-8 les lettres accentuées et les emojis peuvent occuper plusieurs octets.

    Comment compter les caractères sans espaces ?

    Parcourez la chaîne et ignorez les espaces, par exemple en vérifiant isspace(). Vous pouvez aussi supprimer uniquement les espaces normaux ou tous les espaces, selon vos besoins.

    Pourquoi les caractères accentués sont-ils mal comptés ?

    std::string mesure la longueur en octets. En UTF-8, une lettre accentuée occupe deux octets, si bien que le nombre de caractères visibles et le nombre d'octets diffèrent. Pour compter les caractères visibles, il faut un traitement qui tient compte du codage.

    Puis-je essayer le comptage sans compilateur ?

    Oui. Collez la chaîne dans le compteur ci-dessus et vous verrez les caractères avec et sans espaces aussitôt dans le navigateur. Vous pouvez ainsi comparer le résultat à la sortie de votre code C++.