std:: ctype <char>
|
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.
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) |
|
|
[static]
|
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) |