Classe ctype
Uma classe que fornece uma faceta usada para classificar caracteres, fazer conversões de letras maiúsculas e minúsculas, bem como fazer a conversão entre o conjunto de caracteres nativos e o conjunto usado pela localidade.
Sintaxe
template <class CharType>
class ctype : public ctype_base;
Parâmetros
CharType
O tipo usado em um programa para codificar caracteres.
Comentários
Como qualquer faceta de localidade, a ID de objeto estático tem um valor armazenado inicial de zero. A primeira tentativa de acessar seu valor armazenado armazena um valor positivo exclusivo em id
. Os critérios de classificação são fornecidos em um tipo de bitmask aninhado em ctype_base da classe base.
A Biblioteca Padrão C++ define duas especializações explícitas deste modelo de classe:
ctype<char>
, uma especialização explícita cujas diferenças são descritas separadamente. Para obter mais informações, consultectype<char>
Classe.ctype<wchar_t>
, que trata os elementos como caracteres largos.
Outras especializações da classe de modelo ctype<CharType>
:
Converter um valor ch do tipo CharType em um valor do tipo
char
com a expressão(char)ch
.Converter um valor byte do tipo
char
em um valor do tipo CharType com a expressãoCharType(byte)
.
Todas as outras operações são executadas em valores char
da mesma forma que para a especialização explícita ctype<char>
.
Construtores
Construtor | Descrição |
---|---|
ctype | Construtor para objetos da classe ctype que atuam como facetas de localidade para caracteres. |
Typedefs
Nome do tipo | Descrição |
---|---|
char_type | Um tipo que descreve um caractere usado por uma localidade. |
Funções de membro
Função de membro | Descrição |
---|---|
do_is | Uma função virtual chamada para testar se um único caractere tem um atributo específico ou para classificar os atributos de cada caractere em um intervalo e armazená-los em uma matriz. |
do_narrow | Uma função virtual chamada para converter um caractere do tipo CharType usado por uma localidade em caractere correspondente do tipo char no conjunto de caracteres nativos. |
do_scan_is | Uma função virtual chamada para localizar o primeiro caractere em um intervalo que corresponda a uma máscara especificada. |
do_scan_not | Uma função virtual chamada para localizar o primeiro caractere em um intervalo que não corresponda a uma máscara especificada. |
do_tolower | Uma função virtual chamada para converter um caractere ou um intervalo em letras minúsculas. |
do_toupper | Uma função virtual chamada para converter um caractere ou um intervalo em letras maiúsculas. |
do_widen | Uma função virtual chamada para converter um caractere do tipo char no conjunto de caracteres nativos em caractere correspondente do tipo CharType usado por uma localidade. |
is | Testa se um único caractere tem um atributo específico ou classifica os atributos de cada caractere em um intervalo e os armazena em uma matriz. |
narrow | Converte um caractere do tipo CharType usado por uma localidade em caractere correspondente do tipo char no conjunto de caracteres nativos. |
scan_is | Localiza o primeiro caractere em um intervalo que corresponda a uma máscara especificada. |
scan_not | Localiza o primeiro caractere em um intervalo que não corresponda a uma máscara especificada. |
tolower | Converte um caractere ou um intervalo de caracteres em letras minúsculas. |
toupper | Converte um caractere ou um intervalo de caracteres em letras maiúsculas. |
widen | Converte um caractere do tipo char no conjunto de caracteres nativos em caractere correspondente do tipo CharType usado por uma localidade. |
Requisitos
Cabeçalho:<locale>
Namespace: std
ctype::char_type
Um tipo que descreve um caractere usado por uma localidade.
typedef CharType char_type;
Comentários
O tipo é um sinônimo do parâmetro de modelo CharType.
Exemplo
Consulte a função de membro widen para obter um exemplo que usa char_type
como um valor retornado.
ctype::ctype
Construtor para objetos da classe ctype que servem como facetas de localidade para caracteres.
explicit ctype(size_t _Refs = 0);
Parâmetros
_Refs
Valor inteiro usado para especificar o tipo de gerenciamento de memória do objeto.
Comentários
Os valores possíveis para o parâmetro _Refs e sua significância são:
0: o tempo de vida do objeto é gerenciado pelas localidades que o contêm.
1: o tempo de vida do objeto deve ser gerenciado manualmente.
> 1: esses valores não estão definidos.
Nenhum exemplo direto é possível, pois o destruidor está protegido.
O construtor inicializa seu objeto base locale::facet
com locale::facet( _Refs
).
ctype::d o_is
Uma função virtual chamada para testar se um único caractere tem um atributo específico ou para classificar os atributos de cada caractere em um intervalo e armazená-los em uma matriz.
virtual bool do_is(
mask maskVal,
CharType ch) const;
virtual const CharType *do_is(
const CharType* first,
const CharType* last,
mask* dest) const;
Parâmetros
maskVal
O valor de máscara para o qual o caractere será testado.
Ch
O caractere cujos atributos devem ser testados.
first
Um ponteiro para o primeiro caractere no intervalo cujos atributos devem ser classificados.
last
Um ponteiro para o caractere imediatamente após o último caractere no intervalo cujos atributos devem ser classificados.
dest
Um ponteiro para o início da matriz na qual os valores de máscara que caracterizam os atributos de cada um dos caracteres devem ser armazenados.
Valor de retorno
A primeira função retorna um valor booliano que será true
se o caractere testado tiver o atributo descrito pelo valor de máscara; false
se não tiver o atributo.
A segunda função de membro retorna uma matriz que contém os valores de máscara que caracterizam os atributos de cada um dos caracteres no intervalo.
Comentários
Os valores de máscara que classificam os atributos dos caracteres são fornecidos pela classe ctype_base, da qual ctype é derivado. A primeira função membro pode aceitar expressões para o primeiro parâmetro chamado bitmasks e formado pela combinação de valores de máscara pelos operadores bit a bit lógicos (|
, &
, ^
, ~
).
Exemplo
Consulte o exemplo de is, que chama do_is
.
ctype::d o_narrow
Uma função virtual chamada para converter um caractere do tipo CharType
usado por uma localidade em caractere correspondente do tipo char
no conjunto de caracteres nativos.
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;
Parâmetros
Ch
O caractere do tipo Chartype
usado pela localidade a ser convertido.
padrão
O valor padrão a ser atribuído pela função de membro a caracteres do tipo CharType
que não têm caracteres equivalentes do tipo char
.
first
Um ponteiro para o primeiro caractere no intervalo de caracteres a ser convertido.
last
Um ponteiro para o caractere imediatamente após o último caractere no intervalo de caracteres a ser convertido.
dest
Um ponteiro const para o primeiro caractere do tipo char
no intervalo de destino que armazena o intervalo convertido de caracteres.
Valor de retorno
A primeira função membro protegida retornará o caractere nativo do tipo char que corresponde ao caractere de parâmetro do tipo CharType
ou default se nenhum equivalente estiver definido.
A segunda função de membro protegida retorna um ponteiro para o intervalo de destino dos caracteres nativos convertidos de caracteres do tipo CharType
.
Comentários
A segunda função membro de modelo protegida armazena em dest
[ I
] o valor do_narrow
( first
[ I
], default
) de I
no intervalo [0, last
- first
).
Exemplo
Consulte o exemplo de narrow, que chama do_narrow
.
ctype::d o_scan_is
Uma função virtual chamada para localizar o primeiro caractere em um intervalo que corresponda a uma máscara especificada.
virtual const CharType *do_scan_is(
mask maskVal,
const CharType* first,
const CharType* last) const;
Parâmetros
maskVal
O valor de máscara que deve ter correspondência com um caractere.
first
Um ponteiro para o primeiro caractere no intervalo a ser examinado.
last
Um ponteiro para o caractere imediatamente após o último caractere no intervalo a ser examinado.
Valor de retorno
Um ponteiro para o primeiro caractere em um intervalo que corresponde a uma máscara especificada. Se nenhum valor desse tipo existir, a função retornará last.
Comentários
A função de membro protegida retorna o menor ponteiro ptr
no intervalo [ first
, last
) para o qual do_is( maskVal
, * ptr
) é verdadeiro.
Exemplo
Consulte o exemplo de scan_is, que chama do_scan_is
.
ctype::d o_scan_not
Uma função virtual chamada para localizar o primeiro caractere em um intervalo que não corresponda a uma máscara especificada.
virtual const CharType *do_scan_not(
mask maskVal,
const CharType* first,
const CharType* last) const;
Parâmetros
maskVal
O valor de máscara que não deve ter correspondência com um caractere.
first
Um ponteiro para o primeiro caractere no intervalo a ser examinado.
last
Um ponteiro para o caractere imediatamente após o último caractere no intervalo a ser examinado.
Valor de retorno
Um ponteiro para o primeiro caractere em um intervalo que não corresponde a uma máscara especificada. Se nenhum valor desse tipo existir, a função retornará last.
Comentários
A função de membro protegida retorna o menor ponteiro ptr
no intervalo [ first
, last
) para o qual do_is( maskVal
, * ptr
) é falso.
Exemplo
Consulte o exemplo de scan_not, que chama do_scan_not
.
ctype::d o_tolower
Uma função virtual chamada para converter um caractere ou um intervalo de caracteres em letras minúsculas.
virtual CharType do_tolower(CharType ch) const;
virtual const CharType *do_tolower(
CharType* first,
const CharType* last) const;
Parâmetros
Ch
O caractere a ser convertido em letras minúsculas.
first
Um ponteiro para o primeiro caractere no intervalo de caracteres cujas maiúsculas e minúsculas devem ser convertidas.
last
Um ponteiro para o caractere imediatamente após o último caractere no intervalo de caracteres cujas maiúsculas e minúsculas devem ser convertidas.
Valor de retorno
A primeira função membro protegida retorna a forma em minúsculas do parâmetro ch. Se nenhuma forma em minúsculas existir, ela retornará ch. A segunda função membro protegida retorna last.
Comentários
A segunda função membro de modelo protegida substitui cada elemento first
[ I
] de I
no intervalo [0, last
- first
) por do_tolower
( first
[ I
]).
Exemplo
Consulte o exemplo de tolower, que chama do_tolower
.
ctype::d o_toupper
Uma função virtual chamada para converter um caractere ou um intervalo em letras maiúsculas.
virtual CharType do_toupper(CharType ch) const;
virtual const CharType *do_toupper(
CharType* first,
const CharType* last) const;
Parâmetros
Ch
O caractere a ser convertido em maiúsculas.
first
Um ponteiro para o primeiro caractere no intervalo de caracteres cujas maiúsculas e minúsculas devem ser convertidas.
last
Um ponteiro para o caractere imediatamente após o último caractere no intervalo de caracteres cujas maiúsculas e minúsculas devem ser convertidas.
Valor de retorno
A primeira função membro protegida retorna a forma em maiúsculas do parâmetro ch. Se nenhuma forma em maiúsculas existir, ela retornará ch. A segunda função membro protegida retorna last.
Comentários
A segunda função membro de modelo protegida substitui cada elemento first
[ I
] de I
no intervalo [0, last
- first
) por do_toupper
( first
[ I
]).
Exemplo
Consulte o exemplo de toupper, que chama do_toupper
.
ctype::d o_widen
Uma função virtual chamada para converter um caractere do tipo char
no conjunto de caracteres nativos em caractere correspondente do tipo CharType
usado por uma localidade.
virtual CharType do_widen(char byte) const;
virtual const char *do_widen(
const char* first,
const char* last,
CharType* dest) const;
Parâmetros
byte
O caractere do tipo char
no conjunto de caracteres nativo a ser convertido.
first
Um ponteiro para o primeiro caractere no intervalo de caracteres a ser convertido.
last
Um ponteiro para o caractere imediatamente após o último caractere no intervalo de caracteres a ser convertido.
dest
Um ponteiro para o primeiro caractere do tipo CharType
no intervalo de destino que armazena o intervalo convertido de caracteres.
Valor de retorno
A primeira função de membro protegida retorna o caractere do tipo CharType
que corresponde ao caractere de parâmetro do tipo nativo char
.
A segunda função de membro protegida retorna um ponteiro para o intervalo de destino de caracteres do tipo CharType
usados por uma localidade convertida de caracteres nativos do tipo char
.
Comentários
A segunda função de modelo de membro protegida armazena em dest
[ I
] o valor do_widen
( first
[ I
]), para I
no intervalo [0, last
- first
).
Exemplo
Consulte o exemplo de widen, que chama do_widen
.
ctype::é
Testa se um único caractere tem um atributo específico ou classifica os atributos de cada caractere em um intervalo e os armazena em uma matriz.
bool is(mask maskVal, CharType ch) const;
const CharType *is(
const CharType* first,
const CharType* last,
mask* dest) const;
Parâmetros
maskVal
O valor de máscara para o qual o caractere será testado.
Ch
O caractere cujos atributos devem ser testados.
first
Um ponteiro para o primeiro caractere no intervalo cujos atributos devem ser classificados.
last
Um ponteiro para o caractere imediatamente após o último caractere no intervalo cujos atributos devem ser classificados.
dest
Um ponteiro para o início da matriz na qual os valores de máscara que caracterizam os atributos de cada um dos caracteres devem ser armazenados.
Valor de retorno
A primeira função de membro retornará true
se o caractere testado tiver o atributo descrito pelo valor de máscara; false
se não tiver o atributo.
A segunda função de membro retorna um ponteiro para o último caractere no intervalo cujos atributos devem ser classificados.
Comentários
Os valores de máscara que classificam os atributos dos caracteres são fornecidos pela Classe ctype_base, da qual ctype é derivado. A primeira função membro pode aceitar expressões para o primeiro parâmetro chamado bitmasks e formado pela combinação de valores de máscara pelos operadores bit a bit lógicos (|
, &
, ^
, ~
).
Exemplo
// 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::estreito
Converte um caractere do tipo CharType
usado por uma localidade nos caracteres correspondentes do tipo char
no conjunto de caracteres nativo.
char narrow(CharType ch, char default = '\0') const;
const CharType* narrow(
const CharType* first,
const CharType* last,
char default,
char* dest) const;
Parâmetros
Ch
O caractere do tipo Chartype
usado pela localidade a ser convertido.
padrão
O valor padrão a ser atribuído pela função de membro a caracteres do tipo CharType
que não têm caracteres equivalentes do tipo char
.
first
Um ponteiro para o primeiro caractere no intervalo de caracteres a ser convertido.
last
Um ponteiro para o caractere imediatamente após o último caractere no intervalo de caracteres a ser convertido.
dest
Um ponteiro const para o primeiro caractere do tipo char
no intervalo de destino que armazena o intervalo convertido de caracteres.
Valor de retorno
A primeira função de membro retornará o caractere nativo do tipo char
que corresponde ao caractere de parâmetro do tipo CharType default
se nenhum equivalente estiver definido.
A segunda função de membro retorna um ponteiro para o intervalo de destino dos caracteres nativos convertidos de caracteres do tipo CharType
.
Comentários
A primeira função membro retorna do_narrow(ch
, default
). A segunda função membro retorna do_narrow (first
, last
, default
, dest
). Somente os caracteres de origem básicos têm a garantia de terem uma imagem inversa exclusiva CharType
em narrow
. Para esses caracteres de origem básicos, a seguinte invariável se mantém: narrow
( widen ( c ), 0 ) == c.
Exemplo
// 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
Localiza o primeiro caractere em um intervalo que corresponda a uma máscara especificada.
const CharType *scan_is(
mask maskVal,
const CharType* first,
const CharType* last) const;
Parâmetros
maskVal
O valor de máscara que deve ter correspondência com um caractere.
first
Um ponteiro para o primeiro caractere no intervalo a ser examinado.
last
Um ponteiro para o caractere imediatamente após o último caractere no intervalo a ser examinado.
Valor de retorno
Um ponteiro para o primeiro caractere em um intervalo que corresponde a uma máscara especificada. Se nenhum valor desse tipo existir, a função retornará last.
Comentários
A função membro retorna do_scan_is(maskVal
, first
, last
).
Exemplo
// 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
Localiza o primeiro caractere em um intervalo que não corresponda a uma máscara especificada.
const CharType *scan_not(
mask maskVal,
const CharType* first,
const CharType* last) const;
Parâmetros
maskVal
O valor de máscara que não deve ter correspondência com um caractere.
first
Um ponteiro para o primeiro caractere no intervalo a ser examinado.
last
Um ponteiro para o caractere imediatamente após o último caractere no intervalo a ser examinado.
Valor de retorno
Um ponteiro para o primeiro caractere em um intervalo que não corresponde a uma máscara especificada. Se nenhum valor desse tipo existir, a função retornará last.
Comentários
A função membro retorna do_scan_not(maskVal
, first
, last
).
Exemplo
// 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 um caractere ou um intervalo de caracteres em letras minúsculas.
CharType tolower(CharType ch) const;
const CharType *tolower(CharType* first, const CharType* last) const;
Parâmetros
Ch
O caractere a ser convertido em letras minúsculas.
first
Um ponteiro para o primeiro caractere no intervalo de caracteres cujas maiúsculas e minúsculas devem ser convertidas.
last
Um ponteiro para o caractere imediatamente após o último caractere no intervalo de caracteres cujas maiúsculas e minúsculas devem ser convertidas.
Valor de retorno
A primeira função membro retorna a forma em minúsculas do parâmetro ch. Se nenhuma forma em minúsculas existir, ela retornará ch.
A segunda função membro retorna last.
Comentários
A primeira função membro retorna do_tolower(ch
). A segunda função membro retorna do_tolower(first
, last
).
Exemplo
// 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 um caractere ou um intervalo de caracteres em letras maiúsculas.
CharType toupper(CharType ch) const;
const CharType *toupper(CharType* first, const CharType* last) const;
Parâmetros
Ch
O caractere a ser convertido em maiúsculas.
first
Um ponteiro para o primeiro caractere no intervalo de caracteres cujas maiúsculas e minúsculas devem ser convertidas.
last
Um ponteiro para o caractere imediatamente após o último caractere no intervalo de caracteres cujas maiúsculas e minúsculas devem ser convertidas.
Valor de retorno
A primeira função membro retorna a forma em maiúsculas do parâmetro ch. Se nenhuma forma em maiúsculas existir, ela retornará ch.
A segunda função membro retorna last.
Comentários
A primeira função membro retorna do_toupper(ch
). A segunda função de membro retorna do_toupper( first
, last
).
Exemplo
// 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::alargar
Converte um caractere do tipo char
no conjunto de caracteres nativos em caractere correspondente do tipo CharType
usado por uma localidade.
CharType widen(char byte) const;
const char *widen(const char* first, const char* last, CharType* dest) const;
Parâmetros
byte
O caractere do tipo char no conjunto de caracteres nativo a ser convertido.
first
Um ponteiro para o primeiro caractere no intervalo de caracteres a ser convertido.
last
Um ponteiro para o caractere imediatamente após o último caractere no intervalo de caracteres a ser convertido.
dest
Um ponteiro para o primeiro caractere do tipo CharType
no intervalo de destino que armazena o intervalo convertido de caracteres.
Valor de retorno
A primeira função de membro retorna o caractere do tipo CharType
que corresponde ao caractere de parâmetro do tipo nativo char
.
A segunda função de membro retorna um ponteiro para o intervalo de destino de caracteres do tipo CharType
usados por uma localidade convertida de caracteres nativos do tipo char
.
Comentários
A primeira função membro retorna do_widen(byte
). A segunda função membro retorna do_widen(first
, last
, dest
).
Exemplo
// 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!