ctype, classe
Classe fournissant une facette utilisée pour la classification des caractères et la conversion entre majuscules et minuscules et entre le jeu de caractères natif et celui utilisé par les paramètres régionaux.
Syntaxe
template <class CharType>
class ctype : public ctype_base;
Paramètres
CharType
Type utilisé dans le cadre d'un programme pour encoder des caractères.
Notes
Comme avec n'importe quelle facette de paramètres régionaux, l'ID d'objet statique possède une valeur stockée initiale de zéro. La première tentative d’accès à sa valeur stockée entraîne le stockage d’une valeur positive unique dans id
. Les critères de classification sont fournis par un type de masque de bits imbriqué dans la classe de base ctype_base.
La bibliothèque standard C++ définit deux spécialisations explicites de ce modèle de classe :
ctype<char>
, spécialisation explicite dont les différences sont décrites séparément. Pour plus d’informations, consultezctype<char>
Classe.ctype<wchar_t>
, qui traite les éléments comme des caractères larges.
Autres spécialisations du modèle ctype<CharType>
de classe :
Convertissez une valeur ch de type CharType en valeur de type
char
avec l’expression(char)ch
.Convertissez un octet de valeur de type
char
en valeur de type CharType avec l’expressionCharType(byte)
.
Toutes les autres opérations sont effectuées sur char
les valeurs de la même façon que pour la spécialisation ctype<char>
explicite.
Constructeurs
Constructeur | Description |
---|---|
ctype | Constructeur des objets de classe ctype qui servent de facettes de paramètres régionaux pour les caractères. |
Typedefs
Nom de type | Description |
---|---|
char_type | Type qui décrit un caractère utilisé par les paramètres régionaux. |
Fonctions Membre
Fonction membre | Description |
---|---|
do_is | Fonction virtuelle appelée pour vérifier si un caractère unique possède un attribut particulier, ou pour classer les attributs de chaque caractère dans une plage et les stocker dans un tableau. |
do_narrow | Fonction virtuelle appelée pour convertir un caractère de type CharType utilisé par les paramètres régionaux en caractère correspondant de type char dans le jeu de caractères natif. |
do_scan_is | Fonction virtuelle appelée pour rechercher le premier caractère d'une plage qui correspond au masque spécifié. |
do_scan_not | Fonction virtuelle appelée pour rechercher le premier caractère d'une plage qui ne correspond pas au masque spécifié. |
do_tolower | Fonction virtuelle appelée pour convertir un caractère ou une plage de caractères en minuscules. |
do_toupper | Fonction virtuelle appelée pour convertir un caractère ou une plage de caractères en majuscules. |
do_widen | Fonction virtuelle appelée pour convertir un caractère de type char du jeu de caractères natif en caractère correspondant de type CharType utilisé par les paramètres régionaux. |
is | Vérifie si un caractère possède un attribut spécifique, ou classe les attributs de chaque caractère dans une plage et les stocke dans un tableau. |
narrow | Convertit un caractère de type CharType utilisé par les paramètres régionaux en caractère correspondant de type char dans le jeu de caractères natif. |
scan_is | Localise le premier caractère d'une plage qui correspond au masque spécifié. |
scan_not | Localise le premier caractère d'une plage qui ne correspond pas au masque spécifié. |
tolower | Convertit un caractère ou une plage de caractères en minuscules. |
toupper | Convertit un caractère ou une plage de caractères en majuscules. |
widen | Convertit un caractère de type char dans le jeu de caractères natif en caractère correspondant de type CharType utilisé par les paramètres régionaux. |
Spécifications
Header :<locale>
Espace de noms : std
ctype ::char_type
Type qui décrit un caractère utilisé par les paramètres régionaux.
typedef CharType char_type;
Notes
Le type est un synonyme du paramètre de modèle CharType.
Exemple
Consultez la fonction membre widen pour obtenir un exemple d’utilisation de char_type
comme valeur de retour.
ctype ::ctype
Constructeur des objets de classe ctype qui servent de facettes de paramètres régionaux pour les caractères.
explicit ctype(size_t _Refs = 0);
Paramètres
_Refs
Valeur entière qui sert à spécifier le type de gestion de la mémoire pour l’objet.
Notes
Les valeurs possibles pour le paramètre _Refs et leur signification sont les suivantes :
0 : la durée de vie de l’objet est gérée par les paramètres régionaux qui le contiennent.
1 : la durée de vie de l’objet doit être gérée manuellement.
> 1 : Ces valeurs ne sont pas définies.
Aucun exemple direct n’est possible, car le destructeur est protégé.
Le constructeur initialise son objet de base locale::facet
avec locale::facet( _Refs
).
ctype ::d o_is
Fonction virtuelle appelée pour vérifier si un caractère unique possède un attribut particulier, ou pour classer les attributs de chaque caractère dans une plage et les stocker dans un tableau.
virtual bool do_is(
mask maskVal,
CharType ch) const;
virtual const CharType *do_is(
const CharType* first,
const CharType* last,
mask* dest) const;
Paramètres
maskVal
Valeur de masque pour laquelle le caractère doit être vérifié.
Ch
Caractère dont les attributs doivent être vérifiés.
first
Pointeur vers le premier caractère de la plage dont les attributs doivent être classés.
last
Pointeur vers le caractère juste après le dernier caractère de la plage dont les attributs doivent être classés.
dest
Pointeur vers le début du tableau dans lequel les valeurs de masque qui caractérisent les attributs de chaque caractère doivent être stockées.
Valeur de retour
La première fonction membre retourne une valeur booléenne, c’est-à-dire true
si le caractère testé a l’attribut décrit par la valeur de masque ; false
s’il ne parvient pas à avoir l’attribut.
La seconde fonction membre retourne un tableau contenant les valeurs de masque qui caractérisent les attributs de chaque caractère de la plage.
Notes
Les valeurs de masque qui classent les attributs des caractères sont fournies par la classe ctype_base de laquelle dérive ctype. La première fonction membre peut accepter des expressions pour son premier paramètre appelé masque de bits et formée à partir de la combinaison de valeurs de masque par les opérateurs au niveau du bit (|
, , &
^
, ~
).
Exemple
Consultez l’exemple relatif à is, qui appelle do_is
.
ctype ::d o_narrow
Fonction virtuelle appelée pour convertir un caractère de type CharType
utilisé par les paramètres régionaux en caractère correspondant de type char
dans le jeu de caractères natif.
virtual char do_narrow(
CharType ch,
char default = '\0') const;
virtual const CharType* do_narrow(
const CharType* first,
const CharType* last,
char default,
char* dest) const;
Paramètres
Ch
Caractère de type Chartype
utilisé par les paramètres régionaux à convertir.
default
La valeur par défaut doit être assignée par la fonction membre à des caractères de type CharType
qui n’ont pas de caractère équivalent de type char
.
first
Pointeur vers le premier caractère de la plage de caractères à convertir.
last
Pointeur vers le caractère juste après le dernier caractère de la plage de caractères à convertir.
dest
Pointeur const vers le premier caractère de type char
dans la plage de destination qui stocke la plage de caractères convertis.
Valeur de retour
La première fonction membre protégée retourne le caractère natif de type char qui correspond au caractère de paramètre de type CharType
ou par défaut si aucun équivalent n’est défini.
La deuxième fonction membre protégée retourne un pointeur vers la plage de destination de caractères natifs convertis à partir de caractères de type CharType
.
Notes
La deuxième fonction de modèle membre protégée stocke dans dest
[ ] la valeur do_narrow
( [ first
I
], default
pour I
l’intervalle [0, last
- first
). I
Exemple
Consultez l’exemple relatif à narrow, qui appelle do_narrow
.
ctype ::d o_scan_is
Fonction virtuelle appelée pour rechercher le premier caractère d'une plage qui correspond au masque spécifié.
virtual const CharType *do_scan_is(
mask maskVal,
const CharType* first,
const CharType* last) const;
Paramètres
maskVal
Valeur de masque qui doit correspondre à un caractère.
first
Pointeur vers le premier caractère de la plage à analyser.
last
Pointeur vers le caractère juste après le dernier caractère de la plage à analyser.
Valeur de retour
Pointeur vers le premier caractère d’une plage qui correspond à un masque spécifié. Si aucune valeur de ce type n’existe, la fonction retourne la dernière.
Notes
La fonction membre protégée retourne le plus petit pointeur ptr
de la plage [ first
, last
) pour lequel do_is( maskVal
, * ptr
) a la valeur true.
Exemple
Consultez l’exemple relatif à scan_is, qui appelle do_scan_is
.
ctype ::d o_scan_not
Fonction virtuelle appelée pour rechercher le premier caractère d'une plage qui ne correspond pas au masque spécifié.
virtual const CharType *do_scan_not(
mask maskVal,
const CharType* first,
const CharType* last) const;
Paramètres
maskVal
Valeur de masque qui ne doit pas correspondre à un caractère.
first
Pointeur vers le premier caractère de la plage à analyser.
last
Pointeur vers le caractère juste après le dernier caractère de la plage à analyser.
Valeur de retour
Pointeur vers le premier caractère d’une plage qui ne correspond pas à un masque spécifié. Si aucune valeur de ce type n’existe, la fonction retourne la dernière.
Notes
La fonction membre protégée retourne le plus petit pointeur ptr
de la plage [ first
, last
) pour lequel do_is( maskVal
, * ptr
) a la valeur false.
Exemple
Consultez l’exemple relatif à scan_not, qui appelle do_scan_not
.
ctype ::d o_tolower
Fonction virtuelle appelée pour convertir un caractère ou une plage de caractères en minuscules.
virtual CharType do_tolower(CharType ch) const;
virtual const CharType *do_tolower(
CharType* first,
const CharType* last) const;
Paramètres
Ch
Caractère à convertir en minuscules.
first
Pointeur vers le premier caractère de la plage de caractères dont la casse doit être convertie.
last
Pointeur vers le caractère juste après le dernier caractère de la plage de caractères dont la casse doit être convertie.
Valeur de retour
La première fonction membre protégée retourne la forme minuscule du paramètre ch. Si aucune forme minuscule n’existe, elle retourne ch. La deuxième fonction membre protégée retourne la dernière.
Notes
La deuxième fonction de modèle membre protégée remplace chaque élément first
[ ], I
pour I
l’intervalle [0, last
first
- ), par do_tolower
( first
[ I
]).
Exemple
Consultez l’exemple relatif à tolower, qui appelle do_tolower
.
ctype ::d o_toupper
Fonction virtuelle appelée pour convertir un caractère ou une plage de caractères en majuscules.
virtual CharType do_toupper(CharType ch) const;
virtual const CharType *do_toupper(
CharType* first,
const CharType* last) const;
Paramètres
Ch
Caractère à convertir en majuscules.
first
Pointeur vers le premier caractère de la plage de caractères dont la casse doit être convertie.
last
Pointeur vers le caractère juste après le dernier caractère de la plage de caractères dont la casse doit être convertie.
Valeur de retour
La première fonction membre protégée retourne la forme majuscule du paramètre ch. Si aucune forme majuscule n’existe, elle retourne ch. La deuxième fonction membre protégée retourne la dernière.
Notes
La deuxième fonction de modèle membre protégée remplace chaque élément first
[ ], I
pour I
l’intervalle [0, last
first
- ), par do_toupper
( first
[ I
]).
Exemple
Consultez l’exemple relatif à toupper, qui appelle do_toupper
.
ctype ::d o_widen
Fonction virtuelle appelée pour convertir un caractère de type char
du jeu de caractères natif en caractère correspondant de type CharType
utilisé par les paramètres régionaux.
virtual CharType do_widen(char byte) const;
virtual const char *do_widen(
const char* first,
const char* last,
CharType* dest) const;
Paramètres
byte
Caractère de type char
du jeu de caractères natifs à convertir.
first
Pointeur vers le premier caractère de la plage de caractères à convertir.
last
Pointeur vers le caractère juste après le dernier caractère de la plage de caractères à convertir.
dest
Pointeur vers le premier caractère de type CharType
dans la plage de destination qui stocke la plage de caractères convertis.
Valeur de retour
La première fonction membre protégée retourne le caractère de type CharType
qui correspond au caractère de paramètre de type natif char
.
La deuxième fonction membre protégée retourne un pointeur vers la plage de destination de caractères de type CharType
utilisés par des paramètres régionaux, convertis à partir de caractères natifs de type char
.
Notes
La deuxième fonction membre de modèle protégée stocke dans dest
[ I
] la valeur do_widen
( first
[ I
]) pour I
dans l’intervalle [0, last
- first
).
Exemple
Consultez l’exemple relatif à widen, qui appelle do_widen
.
ctype ::is
Vérifie si un seul caractère a un attribut spécifique, ou classe les attributs de chaque caractère dans une plage et les stocke dans un tableau.
bool is(mask maskVal, CharType ch) const;
const CharType *is(
const CharType* first,
const CharType* last,
mask* dest) const;
Paramètres
maskVal
Valeur de masque pour laquelle le caractère doit être vérifié.
Ch
Caractère dont les attributs doivent être vérifiés.
first
Pointeur vers le premier caractère de la plage dont les attributs doivent être classés.
last
Pointeur vers le caractère juste après le dernier caractère de la plage dont les attributs doivent être classés.
dest
Pointeur vers le début du tableau dans lequel les valeurs de masque qui caractérisent les attributs de chaque caractère doivent être stockées.
Valeur de retour
La première fonction membre retourne true
si le caractère vérifié a l’attribut décrit par la valeur de masque ; false
s’il n’a pas l’attribut.
La deuxième fonction membre retourne un pointeur vers le dernier caractère de la plage dont les attributs doivent être classés.
Notes
Les valeurs de masque qui classent les attributs des caractères sont fournies par la classe ctype_base de laquelle dérive ctype. La première fonction membre peut accepter des expressions pour son premier paramètre appelé masque de bits et formée à partir de la combinaison de valeurs de masque par les opérateurs au niveau du bit (|
, , &
^
, ~
).
Exemple
// ctype_is.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
using namespace std;
int main() {
locale loc1 ( "German_Germany" ), loc2 ( "English_Australia" );
if (use_facet<ctype<char> > ( loc1 ).is( ctype_base::alpha, 'a' ))
cout << "The character 'a' in locale loc1 is alphabetic."
<< endl;
else
cout << "The character 'a' in locale loc1 is not alphabetic."
<< endl;
if (use_facet<ctype<char> > ( loc2 ).is( ctype_base::alpha, '!' ))
cout << "The character '!' in locale loc2 is alphabetic."
<< endl;
else
cout << "The character '!' in locale loc2 is not alphabetic."
<< endl;
char *string = "Hello, my name is John!";
ctype<char>::mask maskarray[30];
use_facet<ctype<char> > ( loc2 ).is(
string, string + strlen(string), maskarray );
for (unsigned int i = 0; i < strlen(string); i++) {
cout << string[i] << ": "
<< (maskarray[i] & ctype_base::alpha "alpha"
: "not alpha")
<< endl;;
};
}
ctype ::narrow
Convertit des caractères de type CharType
utilisés par des paramètres régionaux en caractères correspondants de type char
dans le jeu de caractères natifs.
char narrow(CharType ch, char default = '\0') const;
const CharType* narrow(
const CharType* first,
const CharType* last,
char default,
char* dest) const;
Paramètres
Ch
Caractère de type Chartype
utilisé par les paramètres régionaux à convertir.
default
La valeur par défaut doit être assignée par la fonction membre à des caractères de type CharType
qui n’ont pas de caractère équivalent de type char
.
first
Pointeur vers le premier caractère de la plage de caractères à convertir.
last
Pointeur vers le caractère juste après le dernier caractère de la plage de caractères à convertir.
dest
Pointeur const vers le premier caractère de type char
dans la plage de destination qui stocke la plage de caractères convertis.
Valeur de retour
La première fonction membre retourne le caractère natif de type char
qui correspond au caractère de paramètre de type CharType default
si aucun équivalent n’est défini.
La deuxième fonction membre retourne un pointeur vers la plage de destination de caractères natifs convertis à partir de caractères de type CharType
.
Notes
La première fonction membre retourne do_narrow(ch
, default
). La deuxième fonction membre retourne do_narrow (first
, last
, default
, dest
). Seuls les caractères sources de base ont la garantie d’avoir une image unique inverse CharType
sous narrow
. Pour ces caractères sources de base, l’invariant suivant contient : narrow
( élargir ( c ), 0) == c.
Exemple
// ctype_narrow.cpp
// compile with: /EHsc /W3
#include <locale>
#include <iostream>
using namespace std;
int main( )
{
locale loc1 ( "english" );
wchar_t *str1 = L"\x0392fhello everyone";
char str2 [16];
bool result1 = (use_facet<ctype<wchar_t> > ( loc1 ).narrow
( str1, str1 + wcslen(str1), 'X', &str2[0] ) != 0); // C4996
str2[wcslen(str1)] = '\0';
wcout << str1 << endl;
cout << &str2[0] << endl;
}
Xhello everyone
ctype ::scan_is
Localise le premier caractère d'une plage qui correspond au masque spécifié.
const CharType *scan_is(
mask maskVal,
const CharType* first,
const CharType* last) const;
Paramètres
maskVal
Valeur de masque qui doit correspondre à un caractère.
first
Pointeur vers le premier caractère de la plage à analyser.
last
Pointeur vers le caractère juste après le dernier caractère de la plage à analyser.
Valeur de retour
Pointeur vers le premier caractère d’une plage qui correspond à un masque spécifié. Si aucune valeur de ce type n’existe, la fonction retourne la dernière.
Notes
La fonction membre retourne do_scan_is(maskVal
, first
, last
).
Exemple
// ctype_scan_is.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
using namespace std;
int main( )
{
locale loc1 ( "German_Germany" );
char *string = "Hello, my name is John!";
const char* i = use_facet<ctype<char> > ( loc1 ).scan_is
( ctype_base::punct, string, string + strlen(string) );
cout << "The first punctuation is \"" << *i << "\" at position: "
<< i - string << endl;
}
The first punctuation is "," at position: 5
ctype ::scan_not
Localise le premier caractère d'une plage qui ne correspond pas au masque spécifié.
const CharType *scan_not(
mask maskVal,
const CharType* first,
const CharType* last) const;
Paramètres
maskVal
Valeur de masque qui ne doit pas correspondre à un caractère.
first
Pointeur vers le premier caractère de la plage à analyser.
last
Pointeur vers le caractère juste après le dernier caractère de la plage à analyser.
Valeur de retour
Pointeur vers le premier caractère d’une plage qui ne correspond pas à un masque spécifié. Si aucune valeur de ce type n’existe, la fonction retourne la dernière.
Notes
La fonction membre retourne do_scan_not(maskVal
, first
, last
).
Exemple
// ctype_scan_not.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
using namespace std;
int main( )
{
locale loc1 ( "German_Germany" );
char *string = "Hello, my name is John!";
const char* i = use_facet<ctype<char> > ( loc1 ).scan_not
( ctype_base::alpha, string, string + strlen(string) );
cout << "First nonalpha character is \"" << *i << "\" at position: "
<< i - string << endl;
}
First nonalpha character is "," at position: 5
ctype ::tolower
Convertit un caractère ou une plage de caractères en minuscules.
CharType tolower(CharType ch) const;
const CharType *tolower(CharType* first, const CharType* last) const;
Paramètres
Ch
Caractère à convertir en minuscules.
first
Pointeur vers le premier caractère de la plage de caractères dont la casse doit être convertie.
last
Pointeur vers le caractère juste après le dernier caractère de la plage de caractères dont la casse doit être convertie.
Valeur de retour
La première fonction membre retourne la forme minuscule du paramètre ch. Si aucune forme minuscule n’existe, elle retourne ch.
La deuxième fonction membre retourne la dernière.
Notes
La première fonction membre retourne do_tolower(ch
). La deuxième fonction membre retourne do_tolower(first
, last
).
Exemple
// ctype_tolower.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
using namespace std;
int main( )
{
locale loc1 ( "German_Germany" );
char string[] = "HELLO, MY NAME IS JOHN";
use_facet<ctype<char> > ( loc1 ).tolower
( string, string + strlen(string) );
cout << "The lowercase string is: " << string << endl;
}
The lowercase string is: hello, my name is john
ctype ::toupper
Convertit un caractère ou une plage de caractères en majuscules.
CharType toupper(CharType ch) const;
const CharType *toupper(CharType* first, const CharType* last) const;
Paramètres
Ch
Caractère à convertir en majuscule.
first
Pointeur vers le premier caractère de la plage de caractères dont la casse doit être convertie.
last
Pointeur vers le caractère juste après le dernier caractère de la plage de caractères dont la casse doit être convertie.
Valeur de retour
La première fonction membre retourne la forme majuscule du paramètre ch. Si aucune forme majuscule n’existe, elle retourne ch.
La deuxième fonction membre retourne la dernière.
Notes
La première fonction membre retourne do_toupper(ch
). La deuxième fonction membre retourne do_toupper( first
, last
).
Exemple
// ctype_toupper.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
using namespace std;
int main( )
{
locale loc1 ( "German_Germany" );
char string[] = "Hello, my name is John";
use_facet<ctype<char> > ( loc1 ).toupper
( string, string + strlen(string) );
cout << "The uppercase string is: " << string << endl;
}
The uppercase string is: HELLO, MY NAME IS JOHN
ctype ::widen
Convertit un caractère de type char
dans le jeu de caractères natif en caractère correspondant de type CharType
utilisé par les paramètres régionaux.
CharType widen(char byte) const;
const char *widen(const char* first, const char* last, CharType* dest) const;
Paramètres
byte
Caractère de type char du jeu de caractères natifs à convertir.
first
Pointeur vers le premier caractère de la plage de caractères à convertir.
last
Pointeur vers le caractère juste après le dernier caractère de la plage de caractères à convertir.
dest
Pointeur vers le premier caractère de type CharType
dans la plage de destination qui stocke la plage de caractères convertis.
Valeur de retour
La première fonction membre retourne le caractère de type CharType
qui correspond au caractère de paramètre de type natif char
.
La deuxième fonction membre retourne un pointeur vers la plage de destination de caractères de type CharType
utilisés par des paramètres régionaux, convertis à partir de caractères natifs de type char
.
Notes
La première fonction membre retourne do_widen(byte
). La deuxième fonction membre retourne do_widen(first
, last
, dest
).
Exemple
// ctype_widen.cpp
// compile with: /EHsc /W3
#include <locale>
#include <iostream>
using namespace std;
int main( )
{
locale loc1 ( "English" );
char *str1 = "Hello everyone!";
wchar_t str2 [16];
bool result1 = (use_facet<ctype<wchar_t> > ( loc1 ).widen
( str1, str1 + strlen(str1), &str2[0] ) != 0); // C4996
str2[strlen(str1)] = '\0';
cout << str1 << endl;
wcout << &str2[0] << endl;
ctype<wchar_t>::char_type charT;
charT = use_facet<ctype<char> > ( loc1 ).widen( 'a' );
}
Hello everyone!
Hello everyone!
Voir aussi
<paramètres régionaux>
Sécurité des threads dans la bibliothèque C++ Standard