Namespaces
Variants

std:: ctype <char>

From cppreference.net
Défini dans l'en-tête <locale>
template <>
class ctype < char > ;

Cette spécialisation de std::ctype encapsule les fonctionnalités de classification des caractères pour le type char . Contrairement à la version générale de std::ctype , qui utilise des fonctions virtuelles, cette spécialisation utilise la consultation de table pour classer les caractères (ce qui est généralement plus rapide).

La classe de base std::ctype < char > implémente la classification des caractères équivalente au paramètre régional minimal "C". Les règles de classification peuvent être étendues ou modifiées si elle est construite avec un argument de table de classification non par défaut, si elle est construite en tant que std:: ctype_byname < char > ou en tant que facette dérivée définie par l'utilisateur. Toutes les fonctions de saisie formatée de std::istream sont tenues d'utiliser std::ctype < char > pour la classification des caractères lors de l'analyse syntaxique de la saisie.

cpp/locale/ctype base cpp/locale/locale/facet std-ctype char-inheritance.svg

Diagramme d'héritage

Table des matières

Types imbriqués

Type Définition
char_type char

Membres de données

Membre Description
std::locale::id id [static] l'identifiant de la facette
const std:: size_t table_size [static] taille de la table de classification, au moins 256

Fonctions membres

construit un nouveau ctype < char > facet
(fonction membre publique)
détruit un ctype < char > facet
(fonction membre protégée)
obtient la table de classification des caractères
(fonction membre publique)
obtient la table de classification des caractères du locale "C"
(fonction membre statique publique)
classe un caractère ou une séquence de caractères, en utilisant la table de classification
(fonction membre publique)
localise le premier caractère dans une séquence qui correspond à la classification donnée, en utilisant la table de classification
(fonction membre publique)
localise le premier caractère dans une séquence qui ne correspond pas à la classification donnée, en utilisant la table de classification
(fonction membre publique)
invoque do_toupper
(fonction membre publique de std::ctype<CharT> )
invoque do_tolower
(fonction membre publique de std::ctype<CharT> )
invoque do_widen
(fonction membre publique de std::ctype<CharT> )
invoque do_narrow
(fonction membre publique de std::ctype<CharT> )

Fonctions membres protégées

[virtual]
convertit un ou plusieurs caractères en majuscules
(fonction membre protégée virtuelle de std::ctype<CharT> )
[virtual]
convertit un ou plusieurs caractères en minuscules
(fonction membre protégée virtuelle de std::ctype<CharT> )
[virtual]
convertit un ou plusieurs caractères de char vers CharT
(fonction membre protégée virtuelle de std::ctype<CharT> )
[virtual]
convertit un ou plusieurs caractères de CharT vers char
(fonction membre protégée virtuelle de std::ctype<CharT> )

Hérité de std:: ctype_base

Types imbriqués

Type Définition
mask type non spécifié BitmaskType (énumération, type entier ou bitset)

Constantes membres

space
[static]
la valeur de mask identifiant la classification des caractères d'espacement
(constante membre publique statique)
print
[static]
la valeur de mask identifiant la classification des caractères imprimables
(constante membre publique statique)
cntrl
[static]
la valeur de mask identifiant la classification des caractères de contrôle
(constante membre publique statique)
upper
[static]
la valeur de mask identifiant la classification des caractères majuscules
(constante membre publique statique)
lower
[static]
la valeur de mask identifiant la classification des caractères minuscules
(constante membre publique statique)
alpha
[static]
la valeur de mask identifiant la classification des caractères alphabétiques
(constante membre publique statique)
digit
[static]
la valeur de mask identifiant la classification des caractères chiffres
(constante membre publique statique)
punct
[static]
la valeur de mask identifiant la classification des caractères de ponctuation
(constante membre publique statique)
xdigit
[static]
la valeur de mask identifiant la classification des caractères chiffres hexadécimaux
(constante membre publique statique)
blank
[static] (C++11)
la valeur de mask identifiant la classification des caractères blancs
(constante membre publique statique)
alnum
[static]
alpha | digit
(constante membre publique statique)
graph
[static]
alnum | punct
(constante membre publique statique)

Exemple

L'exemple suivant démontre la modification de ctype < char > pour tokeniser des valeurs séparées par des virgules :

#include <cstddef>
#include <iostream>
#include <locale>
#include <sstream>
#include <vector>
// This ctype facet classifies commas and endlines as whitespace
struct csv_whitespace : std::ctype<char>
{
    static const mask* make_table()
    {
        // make a copy of the "C" locale table
        static std::vector<mask> v(classic_table(), classic_table() + table_size);
        v[','] |=  space; // comma will be classified as whitespace
        v[' '] &= ~space; // space will not be classified as whitespace
        return &v[0];
    }
    csv_whitespace(std::size_t refs = 0) : ctype(make_table(), false, refs) {}
};
int main()
{
    std::string in = "Column 1,Column 2,Column 3\n123,456,789";
    std::string token;
    std::cout << "Default locale:\n";
    std::istringstream s1(in);
    while (s1 >> token)
        std::cout << "  " << token << '\n';
    std::cout << "Locale with modified ctype:\n";
    std::istringstream s2(in);
    s2.imbue(std::locale(s2.getloc(), new csv_whitespace));
    while (s2 >> token)
        std::cout << "  " << token << '\n';
}

Sortie :

Default locale:
  Column
  1,Column
  2,Column
  3
  123,456,789
Locale with modified ctype:
  Column 1
  Column 2
  Column 3
  123
  456
  789

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR S'applique à Comportement publié Comportement corrigé
LWG 695 C++98 table() et classic_table() étaient des fonctions membres protégées rendues publiques

Voir aussi

définit les tables de classification des caractères
(modèle de classe)
définit les catégories de classification des caractères
(classe)
représente le std::ctype fourni par le système pour les paramètres régionaux nommés
(modèle de classe)