Classe ctype
Classe che fornisce un facet utilizzato per classificare i caratteri, eseguire la conversione dalle lettere maiuscole e minuscole, nonché per eseguire la conversione tra il set di caratteri nativi e il set utilizzato dalle impostazioni locali.
Sintassi
template <class CharType>
class ctype : public ctype_base;
Parametri
CharType
Tipo utilizzato all'interno di un programma per codificare i caratteri.
Osservazioni:
Come in qualsiasi facet delle impostazioni locali, l'ID dell'oggetto statico ha un valore archiviato iniziale uguale a zero. Il primo tentativo di accedere al valore archiviato consente di archiviare un valore positivo univoco in id
. I criteri di classificazione vengono forniti come tipo di maschera di bit annidata nella classe base ctype_base.
La libreria standard C++ definisce due specializzazioni esplicite di questo modello di classe:
ctype<char>
, una specializzazione esplicita le cui differenze sono descritte separatamente. Per altre informazioni, vederectype<char>
Classe.ctype<wchar_t>
, che considera gli elementi come caratteri wide.
Altre specializzazioni del modello ctype<CharType>
di classe :
Convertire un valore ch di tipo CharType in un valore di tipo
char
con l'espressione(char)ch
.Convertire un byte di valore di tipo
char
in un valore di tipo CharType con l'espressioneCharType(byte)
.
Tutte le altre operazioni vengono eseguite sui char
valori nello stesso modo di per la specializzazione ctype<char>
esplicita.
Costruttori
Costruttore | Descrizione |
---|---|
ctype | Costruttore per gli oggetti della classe ctype utilizzati come facet delle impostazioni locali per i caratteri. |
Typedef
Nome tipo | Descrizione |
---|---|
char_type | Tipo che descrive un carattere utilizzato dalle impostazioni locali. |
Funzioni membro
Funzione membro | Descrizione |
---|---|
do_is | Funzione virtuale chiamata per verificare se un singolo carattere presenta un attributo specifico oppure per classificare gli attributi di ogni carattere di un intervallo e archiviarli in una matrice. |
do_narrow | Funzione virtuale chiamata per convertire un carattere di tipo CharType utilizzato dalle impostazioni locali nel carattere corrispondente di tipo char del set di caratteri nativo. |
do_scan_is | Funzione virtuale chiamata per individuare il primo carattere di un intervallo che corrisponde a una maschera specificata. |
do_scan_not | Funzione virtuale chiamata per individuare il primo carattere di un intervallo che non corrisponde a una maschera specificata. |
do_tolower | Funzione virtuale chiamata per convertire un carattere o un intervallo di caratteri nelle rispettive lettere minuscole. |
do_toupper | Funzione virtuale chiamata per convertire un carattere o un intervallo di caratteri in lettere maiuscole. |
do_widen | Funzione virtuale chiamata per convertire un carattere di tipo char del set di caratteri nativi nel carattere corrispondente di tipo CharType utilizzato dalle impostazioni locali. |
is | Verifica se un singolo carattere presenta un attributo specifico oppure classifica gli attributi di ogni carattere di un intervallo e li archivia in una matrice. |
narrow | Converte un carattere di tipo CharType utilizzato dalle impostazioni locali nel carattere corrispondente di tipo char del set di caratteri nativi. |
scan_is | Individua il primo carattere di un intervallo che corrisponde a una maschera specificata. |
scan_not | Individua il primo carattere di un intervallo che non corrisponde a una maschera specificata. |
tolower | Converte un carattere o un intervallo di caratteri in lettere minuscole. |
toupper | Converte un carattere o un intervallo di caratteri in lettere maiuscole. |
widen | Converte un carattere di tipo char del set di caratteri nativi nel carattere corrispondente di tipo CharType utilizzato dalle impostazioni locali. |
Requisiti
Intestazione:<impostazioni locali>
Spazio dei nomi: std
ctype::char_type
Tipo che descrive un carattere utilizzato dalle impostazioni locali.
typedef CharType char_type;
Osservazioni:
Il tipo è un sinonimo del parametro di modello CharType.
Esempio
Vedere la funzione membro widen per un esempio che usa char_type
come valore restituito.
ctype::ctype
Costruttore per gli oggetti della classe ctype usati come facet delle impostazioni locali per i caratteri.
explicit ctype(size_t _Refs = 0);
Parametri
_Refs
Valore Integer che consente di specificare il tipo di gestione della memoria per l'oggetto.
Osservazioni:
I valori possibili per il parametro _Refs e il loro significato sono:
0: la durata dell'oggetto è gestita dalle impostazioni locali che lo contengono.
1: la durata dell'oggetto deve essere gestita manualmente.
> 1: questi valori non sono definiti.
Non è possibile fornire esempi diretti, poiché il distruttore è protetto.
Il costruttore inizializza l'oggetto di base locale::facet
con locale::facet( _Refs
).
ctype::d o_is
Funzione virtuale chiamata per verificare se un singolo carattere presenta un attributo specifico oppure per classificare gli attributi di ogni carattere di un intervallo e archiviarli in una matrice.
virtual bool do_is(
mask maskVal,
CharType ch) const;
virtual const CharType *do_is(
const CharType* first,
const CharType* last,
mask* dest) const;
Parametri
maskVal
Valore della maschera in base a cui il carattere deve essere sottoposto a test.
Ch
Carattere i cui attributi devono essere sottoposti a test.
first
Puntatore al primo carattere dell'intervallo i cui attributi devono essere classificati.
last
Puntatore al carattere immediatamente successivo all'ultimo carattere dell'intervallo i cui attributi devono essere classificati.
dest
Puntatore all'inizio della matrice in cui sono archiviati i valori della maschera che caratterizzano gli attributi di ogni carattere.
Valore restituito
La prima funzione membro restituisce un valore booleano che è true
se il carattere testato ha l'attributo descritto dal valore mask; false
se l'attributo non riesce.
La seconda funzione membro restituisce una matrice contenente i valori della maschera che caratterizza gli attributi di ogni caratteri dell'intervallo.
Osservazioni:
I valori della maschera che classificano gli attributi dei caratteri sono specificati dalla classe ctype_base, da cui ctype deriva. La prima funzione membro può accettare espressioni per il primo parametro denominato maschera di bit e formato dalla combinazione di valori mask dagli operatori bit per bit (|
, &
, ^
, ~
).
Esempio
Vedere l'esempio di is, che chiama do_is
.
ctype::d o_narrow
Funzione virtuale chiamata per convertire un carattere di tipo CharType
utilizzato dalle impostazioni locali nel carattere corrispondente di tipo char
del set di caratteri nativo.
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;
Parametri
Ch
Carattere di tipo Chartype
usato dalle impostazioni locali da convertire.
default
Valore predefinito che deve essere assegnato dalla funzione membro ai caratteri di tipo CharType
che non dispongono di caratteri corrispondenti di tipo char
.
first
Puntatore al primo carattere in un intervallo di caratteri da convertire.
last
Puntatore al carattere immediatamente successivo all'ultimo carattere dell'intervallo dei caratteri da convertire.
dest
Puntatore const al primo carattere di tipo char
nell'intervallo di destinazione che archivia l'intervallo di caratteri convertito.
Valore restituito
La prima funzione membro protetta restituisce il carattere nativo di tipo char che corrisponde al carattere di parametro di tipo CharType
o predefinito se non è definita alcuna controparte.
La seconda funzione membro protetto restituisce un puntatore per l'intervallo di destinazione di caratteri nativi convertiti a partire da caratteri di tipo CharType
.
Osservazioni:
La seconda funzione modello membro protetto archivia in dest
[ ] il valore do_narrow
( first
[ I
], default
), per I
nell'intervallo [0,first
last
- ). I
Esempio
Vedere l'esempio di narrow, che chiama do_narrow
.
ctype::d o_scan_is
Funzione virtuale chiamata per individuare il primo carattere di un intervallo che corrisponde a una maschera specificata.
virtual const CharType *do_scan_is(
mask maskVal,
const CharType* first,
const CharType* last) const;
Parametri
maskVal
Valore della maschera da confrontare per carattere.
first
Puntatore al primo carattere nell'intervallo da analizzare.
last
Puntatore al carattere immediatamente successivo all'ultimo carattere dell'intervallo da analizzare.
Valore restituito
Puntatore al primo carattere in un intervallo che corrisponde a una maschera specificata. Se non esiste alcun valore di questo tipo, la funzione restituisce l'ultima.
Osservazioni:
La funzione membro protetto restituisce il più piccolo puntatore ptr
nell'intervallo [ first
, last
) per il quale do_is( maskVal
, * ptr
) è true.
Esempio
Vedere l'esempio di scan_is, che chiama do_scan_is
.
ctype::d o_scan_not
Funzione virtuale chiamata per individuare il primo carattere di un intervallo che non corrisponde a una maschera specificata.
virtual const CharType *do_scan_not(
mask maskVal,
const CharType* first,
const CharType* last) const;
Parametri
maskVal
Valore della maschera che non deve essere confrontata per carattere.
first
Puntatore al primo carattere nell'intervallo da analizzare.
last
Puntatore al carattere immediatamente successivo all'ultimo carattere dell'intervallo da analizzare.
Valore restituito
Puntatore al primo carattere in un intervallo che non corrisponde a una maschera specificata. Se non esiste alcun valore di questo tipo, la funzione restituisce l'ultima.
Osservazioni:
La funzione membro protetto restituisce il più piccolo puntatore ptr
nell'intervallo [ first
, last
) per il quale do_is( maskVal
, * ptr
) è false.
Esempio
Vedere l'esempio di scan_not, che chiama do_scan_not
.
ctype::d o_tolower
Funzione virtuale chiamata per convertire un carattere o un intervallo di caratteri in lettere minuscole.
virtual CharType do_tolower(CharType ch) const;
virtual const CharType *do_tolower(
CharType* first,
const CharType* last) const;
Parametri
Ch
Carattere da convertire in minuscolo.
first
Puntatore al primo carattere in un intervallo di caratteri di cui deve essere convertita la combinazione di maiuscole/minuscole.
last
Puntatore al carattere immediatamente successivo all'ultimo carattere dell'intervallo dei caratteri di cui deve essere convertita la combinazione di maiuscole/minuscole.
Valore restituito
La prima funzione membro protetta restituisce la forma minuscola del parametro ch. Se non esiste alcuna forma minuscola, restituisce ch. La seconda funzione membro protetta restituisce l'ultima.
Osservazioni:
La seconda funzione modello membro protetto sostituisce ogni elemento first
[ ], per I
nell'intervallo [0, last
first
- ), con do_tolower
( [ first
I
]). I
Esempio
Vedere l'esempio di tolower che chiama do_tolower
.
ctype::d o_toupper
Funzione virtuale chiamata per convertire un carattere o un intervallo di caratteri in lettere maiuscole.
virtual CharType do_toupper(CharType ch) const;
virtual const CharType *do_toupper(
CharType* first,
const CharType* last) const;
Parametri
Ch
Carattere da convertire in maiuscolo.
first
Puntatore al primo carattere in un intervallo di caratteri di cui deve essere convertita la combinazione di maiuscole/minuscole.
last
Puntatore al carattere immediatamente successivo all'ultimo carattere dell'intervallo dei caratteri di cui deve essere convertita la combinazione di maiuscole/minuscole.
Valore restituito
La prima funzione membro protetta restituisce la forma maiuscola del parametro ch. Se non esiste alcuna forma maiuscola, restituisce ch. La seconda funzione membro protetta restituisce l'ultima.
Osservazioni:
La seconda funzione modello membro protetto sostituisce ogni elemento first
[ ], per I
nell'intervallo [0, last
first
- ), con do_toupper
( [ first
I
]). I
Esempio
Vedere l'esempio di toupper che chiama do_toupper
.
ctype::d o_widen
Funzione virtuale chiamata per convertire un carattere di tipo char
del set di caratteri nativi nel carattere corrispondente di tipo CharType
utilizzato dalle impostazioni locali.
virtual CharType do_widen(char byte) const;
virtual const char *do_widen(
const char* first,
const char* last,
CharType* dest) const;
Parametri
byte
Carattere di tipo char
nel set di caratteri nativo da convertire.
first
Puntatore al primo carattere in un intervallo di caratteri da convertire.
last
Puntatore al carattere immediatamente successivo all'ultimo carattere dell'intervallo dei caratteri da convertire.
dest
Puntatore al primo carattere di tipo CharType
nell'intervallo di destinazione che archivia l'intervallo di caratteri convertito.
Valore restituito
La prima funzione membro protetto restituisce il carattere di tipo CharType
che corrisponde al carattere del parametro di tipo char
nativo.
La seconda funzione membro protetto restituisce un puntatore per l'intervallo di destinazione di caratteri di tipo CharType
usati dalle impostazioni locali convertiti da caratteri nativi di tipo char
.
Osservazioni:
La seconda funzione del modello membro protetto archivia in dest
[ I
] il valore do_widen
( first
[ I
]), per I
nell'intervallo [0, last
- first
).
Esempio
Vedere l'esempio di widen, che chiama do_widen
.
ctype::is
Verifica se un singolo carattere presenta un attributo specifico oppure classifica gli attributi di ogni carattere di un intervallo e li archivia in una matrice.
bool is(mask maskVal, CharType ch) const;
const CharType *is(
const CharType* first,
const CharType* last,
mask* dest) const;
Parametri
maskVal
Valore della maschera in base a cui il carattere deve essere sottoposto a test.
Ch
Carattere i cui attributi devono essere sottoposti a test.
first
Puntatore al primo carattere dell'intervallo i cui attributi devono essere classificati.
last
Puntatore al carattere immediatamente successivo all'ultimo carattere dell'intervallo i cui attributi devono essere classificati.
dest
Puntatore all'inizio della matrice in cui sono archiviati i valori della maschera che caratterizzano gli attributi di ogni carattere.
Valore restituito
La prima funzione membro restituisce true
se il carattere sottoposto a test ha l'attributo descritto dal valore della maschera; false
se non ha l'attributo.
La seconda funzione membro restituisce un puntatore all'ultimo carattere dell'intervallo i cui attributi devono essere classificati.
Osservazioni:
I valori della maschera che classificano gli attributi dei caratteri sono specificati dalla classe ctype_base, da cui deriva ctype. La prima funzione membro può accettare espressioni per il primo parametro denominato maschera di bit e formato dalla combinazione di valori mask dagli operatori bit per bit (|
, &
, ^
, ~
).
Esempio
// 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
Converte i caratteri di tipo CharType
usati dalle impostazioni locali nei caratteri corrispondenti di tipo char
usati nel set di caratteri nativo.
char narrow(CharType ch, char default = '\0') const;
const CharType* narrow(
const CharType* first,
const CharType* last,
char default,
char* dest) const;
Parametri
Ch
Carattere di tipo Chartype
usato dalle impostazioni locali da convertire.
default
Valore predefinito che deve essere assegnato dalla funzione membro ai caratteri di tipo CharType
che non dispongono di caratteri corrispondenti di tipo char
.
first
Puntatore al primo carattere in un intervallo di caratteri da convertire.
last
Puntatore al carattere immediatamente successivo all'ultimo carattere dell'intervallo dei caratteri da convertire.
dest
Puntatore const al primo carattere di tipo char
nell'intervallo di destinazione che archivia l'intervallo di caratteri convertito.
Valore restituito
La prima funzione membro restituisce il carattere nativo di tipo char
che corrisponde al carattere del parametro di tipo CharType default
se non è stato definito alcun equivalente.
La seconda funzione membro restituisce un puntatore per l'intervallo di destinazione di caratteri nativi convertiti a partire da caratteri di tipo CharType
.
Osservazioni:
La prima funzione membro restituisce do_narrow(ch
, default
). La seconda funzione membro restituisce do_narrow (first
, last
, default
, dest
). Solo i caratteri d'origine di base hanno definitivamente un'immagine inversa univoca CharType
in narrow
. Per questi caratteri d'origine di base, l'invariabile seguente include: narrow
( widen ( c ), 0 ) == c.
Esempio
// 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
Individua il primo carattere di un intervallo che corrisponde a una maschera specificata.
const CharType *scan_is(
mask maskVal,
const CharType* first,
const CharType* last) const;
Parametri
maskVal
Valore della maschera da confrontare per carattere.
first
Puntatore al primo carattere nell'intervallo da analizzare.
last
Puntatore al carattere immediatamente successivo all'ultimo carattere dell'intervallo da analizzare.
Valore restituito
Puntatore al primo carattere in un intervallo che corrisponde a una maschera specificata. Se non esiste alcun valore di questo tipo, la funzione restituisce l'ultima.
Osservazioni:
La funzione membro restituisce do_scan_is(maskVal
, first
, last
).
Esempio
// 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
Individua il primo carattere di un intervallo che non corrisponde a una maschera specificata.
const CharType *scan_not(
mask maskVal,
const CharType* first,
const CharType* last) const;
Parametri
maskVal
Valore della maschera che non deve essere confrontata per carattere.
first
Puntatore al primo carattere nell'intervallo da analizzare.
last
Puntatore al carattere immediatamente successivo all'ultimo carattere dell'intervallo da analizzare.
Valore restituito
Puntatore al primo carattere in un intervallo che non corrisponde a una maschera specificata. Se non esiste alcun valore di questo tipo, la funzione restituisce l'ultima.
Osservazioni:
La funzione membro restituisce do_scan_not(maskVal
, first
, last
).
Esempio
// 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
Converte un carattere o un intervallo di caratteri in lettere minuscole.
CharType tolower(CharType ch) const;
const CharType *tolower(CharType* first, const CharType* last) const;
Parametri
Ch
Carattere da convertire in minuscolo.
first
Puntatore al primo carattere in un intervallo di caratteri di cui deve essere convertita la combinazione di maiuscole/minuscole.
last
Puntatore al carattere immediatamente successivo all'ultimo carattere dell'intervallo dei caratteri di cui deve essere convertita la combinazione di maiuscole/minuscole.
Valore restituito
La prima funzione membro restituisce la forma minuscola del parametro ch. Se non esiste alcuna forma minuscola, restituisce ch.
La seconda funzione membro restituisce l'ultima.
Osservazioni:
La prima funzione membro restituisce do_tolower(ch
). La seconda funzione membro restituisce do_tolower(first
, last
).
Esempio
// 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
Converte un carattere o un intervallo di caratteri in lettere maiuscole.
CharType toupper(CharType ch) const;
const CharType *toupper(CharType* first, const CharType* last) const;
Parametri
Ch
Carattere da convertire in lettere maiuscole.
first
Puntatore al primo carattere in un intervallo di caratteri di cui deve essere convertita la combinazione di maiuscole/minuscole.
last
Puntatore al carattere immediatamente successivo all'ultimo carattere dell'intervallo dei caratteri di cui deve essere convertita la combinazione di maiuscole/minuscole.
Valore restituito
La prima funzione membro restituisce la forma maiuscola del parametro ch. Se non esiste alcuna forma maiuscola, restituisce ch.
La seconda funzione membro restituisce l'ultima.
Osservazioni:
La prima funzione membro restituisce do_toupper(ch
). La seconda funzione membro restituisce do_toupper( first
, last
).
Esempio
// 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
Converte un carattere di tipo char
del set di caratteri nativi nel carattere corrispondente di tipo CharType
utilizzato dalle impostazioni locali.
CharType widen(char byte) const;
const char *widen(const char* first, const char* last, CharType* dest) const;
Parametri
byte
Carattere di tipo char nel set di caratteri nativo da convertire.
first
Puntatore al primo carattere in un intervallo di caratteri da convertire.
last
Puntatore al carattere immediatamente successivo all'ultimo carattere dell'intervallo dei caratteri da convertire.
dest
Puntatore al primo carattere di tipo CharType
nell'intervallo di destinazione che archivia l'intervallo di caratteri convertito.
Valore restituito
La prima funzione membro restituisce il carattere di tipo CharType
che corrisponde al carattere del parametro di tipo char
nativo.
La seconda funzione membro restituisce un puntatore per l'intervallo di destinazione di caratteri di tipo CharType
usati dalle impostazioni locali convertiti da caratteri nativi di tipo char
.
Osservazioni:
La prima funzione membro restituisce do_widen(byte
). La seconda funzione membro restituisce do_widen(first
, last
, dest
).
Esempio
// 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!
Vedi anche
<impostazioni locali>
Thread Safety in the C++ Standard Library (Sicurezza dei thread nella libreria standard C++)