ctype — Klasa
Klasa zawierająca zestaw reguł, który służy do klasyfikowania znaków, konwersji z wielkich i małych liter i konwersji między macierzystym zestawem znaków i zestawem używanym przez ustawienia regionalne.
template <class CharType>
class ctype : public ctype_base;
Typ char
Typ używany w programie do kodowania znaków.
Podobnie jak w przypadku dowolnego zestawu reguł ustawień regionalnych, identyfikator obiektu statycznego ma początkową przechowywaną wartość zero. Pierwsza próba uzyskania dostępu do przechowywanej wartości przechowuje unikatową wartość dodatnią w pliku id
. Do kryteriów klasyfikacji jest dostarczany typ zagnieżdżonej maski bitów w klasie bazowej ctype_base.
Biblioteka Standardowa języka C++ definiuje dwie jawne specjalizacje tego szablonu klasy:
ctype<char>
, jawna specjalizacja, której różnice są opisane oddzielnie. Aby uzyskać więcej informacji, zobaczctype<char>
Klasa.ctype<wchar_t>
, który traktuje elementy jako znaki szerokie.
Inne specjalizacje szablonu ctype<CharType>
klasy:
Przekonwertuj wartość typu CharType na wartość typu
char
za pomocą wyrażenia(char)ch
.Przekonwertuj bajt wartości typu
char
na wartość typu CharType za pomocą wyrażeniaCharType(byte)
.
Wszystkie inne operacje są wykonywane na char
wartościach w taki sam sposób jak w przypadku jawnej specjalizacji ctype<char>
.
Konstruktor | opis |
---|---|
ctype | Konstruktor dla obiektów klasy ctype , które służą jako zestawy reguł ustawień regionalnych dla znaków. |
Nazwa typu | opis |
---|---|
char_type | Typ, który opisuje znak używany przez ustawienie regionalne. |
Funkcja składowa | opis |
---|---|
do_is | Funkcja wirtualna wywoływana w celu sprawdzenia, czy pojedynczy znak ma określony atrybut, lub sklasyfikowania atrybutów każdego znaku w zakresie i przechowywania ich w tablicy. |
do_narrow | Funkcja wirtualna wywoływana w celu przekonwertowania znaku typu CharType używanego przez ustawienia regionalne na odpowiedni znak typu char w natywnym zestawie znaków. |
do_scan_is | Wirtualna funkcja wywoływana w celu zlokalizowania pierwszego znaku w zakresie, który pasuje do określonej maski. |
do_scan_not | Funkcja wirtualna wywoływana w celu zlokalizowania pierwszego znaku w zakresie, który nie pasuje do określonej maski. |
do_tolower | Funkcja wirtualna wywoływana w celu konwersji znaku lub zakresu znaków na ich małe litery. |
do_toupper | Funkcja wirtualna wywoływana w celu konwersji znaku lub zakresu znaków na ich wielkie litery. |
do_widen | Funkcja wirtualna wywoływana w celu konwertowania znaku typu char w postaci natywnej ustawionej na odpowiedni znak typu CharType używanego przez ustawienia regionalne. |
is | Sprawdza, czy pojedynczy znak ma określony atrybut, lub klasyfikuje atrybuty każdego znaku w zakresie i przechowuje je w tablicy. |
wąski | Konwertuje znak typu CharType używany przez ustawienia regionalne na odpowiedni znak typu char w natywnym zestawie znaków. |
scan_is | Lokalizuje pierwszy znak w zakresie, który pasuje do określonej maski. |
scan_not | Lokalizuje pierwszy znak w zakresie, który nie pasuje do określonej maski. |
tolower | Konwertuje znak lub zakres znaków na małe litery. |
toupper | Konwertuje znak lub zakres znaków na wielkie litery. |
rozszerzyć | Konwertuje znak typu char w postaci natywnej ustawionej na odpowiedni znak typu CharType używany przez ustawienia regionalne. |
Nagłówek:<ustawienia regionalne>
Przestrzeń nazw: std
Typ, który opisuje znak używany przez ustawienie regionalne.
typedef CharType char_type;
Typ jest synonimem parametru CharType szablonu.
Zobacz rozszerzenie funkcji składowej, aby zapoznać się z przykładem używanym char_type
jako wartość zwracana.
Konstruktor dla obiektów typu ctype klasy, które służą jako zestawy reguł ustawień regionalnych dla znaków.
explicit ctype(size_t _Refs = 0);
_Bibl.
Wartość całkowita używana do określania typu zarządzania pamięcią dla obiektu.
Możliwe wartości parametru _Refs i ich istotności to:
0: Okres istnienia obiektu jest zarządzany przez ustawienia regionalne, które go zawierają.
1: Okres istnienia obiektu musi być zarządzany ręcznie.
> 1: Te wartości nie są zdefiniowane.
Nie są możliwe żadne bezpośrednie przykłady, ponieważ destruktor jest chroniony.
Konstruktor inicjuje obiekt locale::facet
podstawowy za pomocą ustawień regionalnych::facet( _Refs
).
Funkcja wirtualna wywoływana w celu sprawdzenia, czy pojedynczy znak ma określony atrybut, lub sklasyfikowania atrybutów każdego znaku w zakresie i przechowywania ich w tablicy.
virtual bool do_is(
mask maskVal,
CharType ch) const;
virtual const CharType *do_is(
const CharType* first,
const CharType* last,
mask* dest) const;
maskaVal
Wartość maski, dla której ma zostać przetestowany znak.
Ch
Znak, którego atrybuty mają być testowane.
pierwszy
Wskaźnik do pierwszego znaku w zakresie, którego atrybuty mają być klasyfikowane.
ostatni
Wskaźnik do znaku bezpośrednio po ostatnim znaku w zakresie, którego atrybuty mają być klasyfikowane.
dest
Wskaźnik na początek tablicy, w której wartości maski charakteryzujące atrybuty każdego znaku mają być przechowywane.
Pierwsza funkcja składowa zwraca wartość logiczną, która polega true
na tym, że testowany znak ma atrybut opisany przez wartość maski; false
jeśli nie ma atrybutu.
Druga funkcja składowa zwraca tablicę zawierającą wartości maski charakteryzujące atrybuty każdego znaku w zakresie.
Wartości maski klasyfikujące atrybuty znaków są dostarczane przez klasę ctype_base, z której pochodzi typ ctype. Pierwsza funkcja składowa może akceptować wyrażenia dla pierwszego parametru określanego jako maski bitowe i tworzone na podstawie kombinacji wartości maski przez operatory bitowe (|
, &
, ^
, ~
).
Zobacz przykład , który wywołuje metodę do_is
.
Funkcja wirtualna wywoływana w celu przekonwertowania znaku typu CharType
używanego przez ustawienia regionalne na odpowiedni znak typu char
w natywnym zestawie znaków.
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;
Ch
Znak typu Chartype
używany przez ustawienia regionalne do przekonwertowania.
default
Wartość domyślna, która ma być przypisana przez funkcję składową do znaków typu CharType
, które nie mają znaków odpowiedników typu char
.
pierwszy
Wskaźnik do pierwszego znaku w zakresie znaków do przekonwertowania.
ostatni
Wskaźnik do znaku bezpośrednio po ostatnim znaku w zakresie znaków do przekonwertowania.
dest
Wskaźnik const do pierwszego znaku typu char
w zakresie docelowym, który przechowuje przekonwertowany zakres znaków.
Pierwsza chroniona funkcja składowa zwraca natywny znak typu char, który odpowiada znakowi parametru typu CharType
lub wartości domyślnej , jeśli nie zdefiniowano żadnego odpowiednika.
Druga chroniona funkcja składowa zwraca wskaźnik do docelowego zakresu znaków natywnych przekonwertowanych z znaków typu CharType
.
Druga funkcja szablonu chronionego elementu członkowskiego przechowuje w dest
[ ] wartość do_narrow
( first
[ I
], default
), dla I
w interwale [0, last
- first
). I
Zobacz przykład, aby zawęzić metodę , która wywołuje metodędo_narrow
.
Wirtualna funkcja wywoływana w celu zlokalizowania pierwszego znaku w zakresie, który pasuje do określonej maski.
virtual const CharType *do_scan_is(
mask maskVal,
const CharType* first,
const CharType* last) const;
maskaVal
Wartość maski, która ma być dopasowana przez znak.
pierwszy
Wskaźnik do pierwszego znaku w zakresie do skanowania.
ostatni
Wskaźnik do znaku bezpośrednio po ostatnim znaku w zakresie do skanowania.
Wskaźnik do pierwszego znaku w zakresie, który pasuje do określonej maski. Jeśli taka wartość nie istnieje, funkcja zwraca ostatnią wartość.
Funkcja chronionego elementu członkowskiego zwraca najmniejszy wskaźnik ptr
w zakresie [ first
, last
), dla którego do_is( maskVal
, * ptr
) ma wartość true.
Zobacz przykład scan_is, który wywołuje metodę do_scan_is
.
Funkcja wirtualna wywoływana w celu zlokalizowania pierwszego znaku w zakresie, który nie pasuje do określonej maski.
virtual const CharType *do_scan_not(
mask maskVal,
const CharType* first,
const CharType* last) const;
maskaVal
Wartość maski nie jest dopasowywana przez znak.
pierwszy
Wskaźnik do pierwszego znaku w zakresie do skanowania.
ostatni
Wskaźnik do znaku bezpośrednio po ostatnim znaku w zakresie do skanowania.
Wskaźnik do pierwszego znaku w zakresie, który nie pasuje do określonej maski. Jeśli taka wartość nie istnieje, funkcja zwraca ostatnią wartość.
Funkcja chronionego elementu członkowskiego zwraca najmniejszy wskaźnik ptr
w zakresie [ first
, last
), dla którego do_is( maskVal
, * ptr
) jest false.
Zobacz przykład scan_not, który wywołuje metodę do_scan_not
.
Funkcja wirtualna wywoływana w celu przekonwertowania znaku lub zakresu znaków na małe litery.
virtual CharType do_tolower(CharType ch) const;
virtual const CharType *do_tolower(
CharType* first,
const CharType* last) const;
Ch
Znak, który ma zostać przekonwertowany na małe litery.
pierwszy
Wskaźnik do pierwszego znaku w zakresie znaków, których przypadki mają być konwertowane.
ostatni
Wskaźnik do znaku bezpośrednio po ostatnim znaku w zakresie znaków, których przypadki mają być konwertowane.
Pierwsza chroniona funkcja składowa zwraca małą postać parametru ch. Jeśli nie istnieje żadna mała litera formularza, zwraca wartość ch. Druga chroniona funkcja składowa zwraca ostatnio.
Druga funkcja szablonu chronionego elementu członkowskiego zastępuje każdy element first
[ ], dla I
w interwale [0, - last
first
), z do_tolower
( first
[ I
]). I
Zobacz przykład dla elementu tolower, który wywołuje metodę do_tolower
.
Funkcja wirtualna wywoływana w celu konwersji znaku lub zakresu znaków na ich wielkie litery.
virtual CharType do_toupper(CharType ch) const;
virtual const CharType *do_toupper(
CharType* first,
const CharType* last) const;
Ch
Znak, który ma zostać przekonwertowany na wielkie litery.
pierwszy
Wskaźnik do pierwszego znaku w zakresie znaków, których przypadki mają być konwertowane.
ostatni
Wskaźnik do znaku bezpośrednio po ostatnim znaku w zakresie znaków, których przypadki mają być konwertowane.
Pierwsza chroniona funkcja składowa zwraca wielką postać parametru ch. Jeśli nie istnieje żadna wielka litera, zwraca wartość ch. Druga chroniona funkcja składowa zwraca ostatnio.
Druga funkcja szablonu chronionego elementu członkowskiego zastępuje każdy element first
[ ], dla I
w interwale [0, - last
first
), z do_toupper
( first
[ I
]). I
Zobacz przykład polecenia toupper, który wywołuje metodę do_toupper
.
Funkcja wirtualna wywoływana w celu konwertowania znaku typu char
w postaci natywnej ustawionej na odpowiedni znak typu CharType
używanego przez ustawienia regionalne.
virtual CharType do_widen(char byte) const;
virtual const char *do_widen(
const char* first,
const char* last,
CharType* dest) const;
byte
Znak typu char
w zestawie znaków natywnych, który ma zostać przekonwertowany.
pierwszy
Wskaźnik do pierwszego znaku w zakresie znaków do przekonwertowania.
ostatni
Wskaźnik do znaku bezpośrednio po ostatnim znaku w zakresie znaków do przekonwertowania.
dest
Wskaźnik do pierwszego znaku typu CharType
w zakresie docelowym, który przechowuje przekonwertowany zakres znaków.
Pierwsza chroniona funkcja składowa zwraca znak typu CharType
, który odpowiada znakowi parametru typu char
natywnego .
Druga chroniona funkcja składowa zwraca wskaźnik do docelowego zakresu znaków typu CharType
używanego przez ustawienia regionalne przekonwertowane z natywnych znaków typu char
.
Druga funkcja szablonu chronionego elementu członkowskiego przechowuje w dest
[ ] wartość do_widen
( first
[ I
]), dla I
w interwale [0, last
- first
). I
Zobacz przykład , aby uzyskać szczegółowe informacje, które wywołuje metodę do_widen
.
Sprawdza, czy pojedynczy znak ma określony atrybut, czy klasyfikuje atrybuty każdego znaku w zakresie i przechowuje je w tablicy.
bool is(mask maskVal, CharType ch) const;
const CharType *is(
const CharType* first,
const CharType* last,
mask* dest) const;
maskaVal
Wartość maski, dla której ma zostać przetestowany znak.
Ch
Znak, którego atrybuty mają być testowane.
pierwszy
Wskaźnik do pierwszego znaku w zakresie, którego atrybuty mają być klasyfikowane.
ostatni
Wskaźnik do znaku bezpośrednio po ostatnim znaku w zakresie, którego atrybuty mają być klasyfikowane.
dest
Wskaźnik na początek tablicy, w której wartości maski charakteryzujące atrybuty każdego znaku mają być przechowywane.
Pierwsza funkcja składowa zwraca true
, jeśli przetestowany znak ma atrybut opisany przez wartość maski; false
jeśli nie ma atrybutu.
Druga funkcja składowa zwraca wskaźnik do ostatniego znaku w zakresie, którego atrybuty mają być klasyfikowane.
Wartości maski klasyfikujące atrybuty znaków są dostarczane przez klasę ctype_base Class, z której pochodzi ctype. Pierwsza funkcja składowa może akceptować wyrażenia dla pierwszego parametru określanego jako maski bitowe i tworzone na podstawie kombinacji wartości maski przez operatory bitowe (|
, &
, ^
, ~
).
// 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;;
};
}
Konwertuje znaki typu CharType
używanego przez ustawienia regionalne na odpowiednie znaki typu char
w natywnym zestawie znaków.
char narrow(CharType ch, char default = '\0') const;
const CharType* narrow(
const CharType* first,
const CharType* last,
char default,
char* dest) const;
Ch
Znak typu Chartype
używany przez ustawienia regionalne do przekonwertowania.
default
Wartość domyślna, która ma być przypisana przez funkcję składową do znaków typu CharType
, które nie mają znaków odpowiedników typu char
.
pierwszy
Wskaźnik do pierwszego znaku w zakresie znaków do przekonwertowania.
ostatni
Wskaźnik do znaku bezpośrednio po ostatnim znaku w zakresie znaków do przekonwertowania.
dest
Wskaźnik const do pierwszego znaku typu char
w zakresie docelowym, który przechowuje przekonwertowany zakres znaków.
Pierwsza funkcja składowa zwraca natywny znak typu char
, który odpowiada znakowi parametru typu CharType default
, jeśli nie zdefiniowano odpowiednika.
Druga funkcja składowa zwraca wskaźnik do docelowego zakresu znaków natywnych przekonwertowanych z znaków typu CharType
.
Pierwsza funkcja składowa zwraca do_narrow(ch
, default
). Druga funkcja składowa zwraca do_narrow (first
, last
, default
, dest
). Gwarantowane są tylko podstawowe znaki źródłowe, które mają unikatowy odwrotny obraz CharType
w obszarze narrow
. Dla tych podstawowych znaków źródłowych następujące niezmienne blokady: narrow
( widen ( c ), 0 ) == c.
// 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
Lokalizuje pierwszy znak w zakresie, który pasuje do określonej maski.
const CharType *scan_is(
mask maskVal,
const CharType* first,
const CharType* last) const;
maskaVal
Wartość maski, która ma być dopasowana przez znak.
pierwszy
Wskaźnik do pierwszego znaku w zakresie do skanowania.
ostatni
Wskaźnik do znaku bezpośrednio po ostatnim znaku w zakresie do skanowania.
Wskaźnik do pierwszego znaku w zakresie, który pasuje do określonej maski. Jeśli taka wartość nie istnieje, funkcja zwraca ostatnią wartość.
Funkcja składowa zwraca do_scan_is(maskVal
, first
, last
).
// 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
Lokalizuje pierwszy znak w zakresie, który nie pasuje do określonej maski.
const CharType *scan_not(
mask maskVal,
const CharType* first,
const CharType* last) const;
maskaVal
Wartość maski nie jest dopasowywana przez znak.
pierwszy
Wskaźnik do pierwszego znaku w zakresie do skanowania.
ostatni
Wskaźnik do znaku bezpośrednio po ostatnim znaku w zakresie do skanowania.
Wskaźnik do pierwszego znaku w zakresie, który nie pasuje do określonej maski. Jeśli taka wartość nie istnieje, funkcja zwraca ostatnią wartość.
Funkcja składowa zwraca do_scan_not(maskVal
, first
, last
).
// 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
Konwertuje znak lub zakres znaków na małe litery.
CharType tolower(CharType ch) const;
const CharType *tolower(CharType* first, const CharType* last) const;
Ch
Znak, który ma zostać przekonwertowany na małe litery.
pierwszy
Wskaźnik do pierwszego znaku w zakresie znaków, których przypadki mają być konwertowane.
ostatni
Wskaźnik do znaku bezpośrednio po ostatnim znaku w zakresie znaków, których przypadki mają być konwertowane.
Pierwsza funkcja składowa zwraca małą postać parametru ch. Jeśli nie istnieje żadna mała litera formularza, zwraca wartość ch.
Druga funkcja składowa zwraca ostatnio.
Pierwsza funkcja składowa zwraca do_tolower(ch
). Druga funkcja składowa zwraca wartość do_tolower(first
, last
).
// 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
Konwertuje znak lub zakres znaków na wielkie litery.
CharType toupper(CharType ch) const;
const CharType *toupper(CharType* first, const CharType* last) const;
Ch
Znak, który ma zostać przekonwertowany na wielkie litery.
pierwszy
Wskaźnik do pierwszego znaku w zakresie znaków, których przypadki mają być konwertowane.
ostatni
Wskaźnik do znaku bezpośrednio po ostatnim znaku w zakresie znaków, których przypadki mają być konwertowane.
Pierwsza funkcja składowa zwraca wielką postać parametru ch. Jeśli nie istnieje żadna wielka litera, zwraca wartość ch.
Druga funkcja składowa zwraca ostatnio.
Pierwsza funkcja składowa zwraca do_toupper(ch
). Druga funkcja składowa zwraca do_toupper( first
, last
).
// 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
Konwertuje znak typu char
w postaci natywnej ustawionej na odpowiedni znak typu CharType
używany przez ustawienia regionalne.
CharType widen(char byte) const;
const char *widen(const char* first, const char* last, CharType* dest) const;
byte
Znak typu char w natywnym zestawie znaków, który ma zostać przekonwertowany.
pierwszy
Wskaźnik do pierwszego znaku w zakresie znaków do przekonwertowania.
ostatni
Wskaźnik do znaku bezpośrednio po ostatnim znaku w zakresie znaków do przekonwertowania.
dest
Wskaźnik do pierwszego znaku typu CharType
w zakresie docelowym, który przechowuje przekonwertowany zakres znaków.
Pierwsza funkcja składowa zwraca znak typu CharType
, który odpowiada znakowi parametru typu char
natywnego .
Druga funkcja składowa zwraca wskaźnik do docelowego zakresu znaków typu CharType
używanego przez ustawienia regionalne przekonwertowane z natywnych znaków typu char
.
Pierwsza funkcja składowa zwraca do_widen(byte
). Druga funkcja składowa zwraca do_widen(first
, last
, dest
).
// 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!
<ustawienia regionalne>
Bezpieczeństwo wątku w standardowej bibliotece C++