ctype Class
A class that provides a facet that is used to classify characters, convert from upper and lower cases, and convert between the native character set and that set used by the locale.
Syntax
template <class CharType>
class ctype : public ctype_base;
Parameters
CharType
The type used within a program to encode characters.
Remarks
As with any locale facet, the static object ID has an initial stored value of zero. The first attempt to access its stored value stores a unique positive value in id
. Classification criteria are provided a nested bitmask type in the base class ctype_base.
The C++ Standard Library defines two explicit specializations of this class template:
ctype<char>
, an explicit specialization whose differences are described separately. For more information, seectype<char>
Class.ctype<wchar_t>
, which treats elements as wide characters.
Other specializations of class template ctype<CharType>
:
Convert a value ch of type CharType to a value of type
char
with the expression(char)ch
.Convert a value byte of type
char
to a value of type CharType with the expressionCharType(byte)
.
All other operations are performed on char
values in the same way as for the explicit specialization ctype<char>
.
Constructors
Constructor | Description |
---|---|
ctype | Constructor for objects of class ctype that serve as locale facets for characters. |
Typedefs
Type name | Description |
---|---|
char_type | A type that describes a character used by a locale. |
Member functions
Member function | Description |
---|---|
do_is | A virtual function called to test whether a single character has a particular attribute, or classify the attributes of each character in a range and stores them in an array. |
do_narrow | A virtual function called to convert a character of type CharType used by a locale to the corresponding character of type char in the native character set. |
do_scan_is | A virtual function called to locate the first character in a range that matches a specified mask. |
do_scan_not | A virtual function called to locate the first character in a range that does not match a specified mask. |
do_tolower | A virtual function called to convert a character or a range of characters to their lower case. |
do_toupper | A virtual function called to convert a character or a range of characters to upper case. |
do_widen | A virtual function called to converts a character of type char in the native character set to the corresponding character of type CharType used by a locale. |
is | Tests whether a single character has a particular attribute, or classifies the attributes of each character in a range and stores them in an array. |
narrow | Converts a character of type CharType used by a locale to the corresponding character of type char in the native character set. |
scan_is | Locates the first character in a range that matches a specified mask. |
scan_not | Locates the first character in a range that does not match a specified mask. |
tolower | Converts a character or a range of characters to lower case. |
toupper | Converts a character or a range of characters to upper case. |
widen | Converts a character of type char in the native character set to the corresponding character of type CharType used by a locale. |
Requirements
Header: <locale>
Namespace: std
ctype::char_type
A type that describes a character used by a locale.
typedef CharType char_type;
Remarks
The type is a synonym for the template parameter CharType.
Example
See the member function widen for an example that uses char_type
as a return value.
ctype::ctype
Constructor for objects of class ctype that serve as locale facets for characters.
explicit ctype(size_t _Refs = 0);
Parameters
_Refs
Integer value used to specify the type of memory management for the object.
Remarks
The possible values for the _Refs parameter and their significance are:
0: The lifetime of the object is managed by the locales that contain it.
1: The lifetime of the object must be manually managed.
> 1: These values are not defined.
No direct examples are possible, because the destructor is protected.
The constructor initializes its locale::facet
base object with locale::facet( _Refs
).
ctype::do_is
A virtual function called to test whether a single character has a particular attribute, or classify the attributes of each character in a range and stores them in an array.
virtual bool do_is(
mask maskVal,
CharType ch) const;
virtual const CharType *do_is(
const CharType* first,
const CharType* last,
mask* dest) const;
Parameters
maskVal
The mask value for which the character is to be tested.
ch
The character whose attributes are to be tested.
first
A pointer to the first character in the range whose attributes are to be classified.
last
A pointer to the character immediately following the last character in the range whose attributes are to be classified.
dest
A pointer to the beginning of the array where the mask values characterizing the attributes of each of the characters are to be stored.
Return Value
The first member function returns a Boolean value that is true
if the character tested has the attribute described by the mask value; false
if it fails to have the attribute.
The second member function returns an array containing the mask values characterizing the attributes of each of the characters in the range.
Remarks
The mask values classifying the attributes of the characters are provided by the class ctype_base, from which ctype derives. The first member function can accept expressions for its first parameter referred to as bitmasks and formed from the combination of mask values by the bitwise operators (|
, &
, ^
, ~
).
Example
See the example for is, which calls do_is
.
ctype::do_narrow
A virtual function called to convert a character of type CharType
used by a locale to the corresponding character of type char
in the native character set.
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;
Parameters
ch
The character of type Chartype
used by the locale to be converted.
default
The default value to be assigned by the member function to characters of type CharType
that do not have counterpart characters of type char
.
first
A pointer to the first character in the range of characters to be converted.
last
A pointer to the character immediately following the last character in the range of characters to be converted.
dest
A const pointer to the first character of type char
in the destination range that stores the converted range of characters.
Return Value
The first protected member function returns the native character of type char that corresponds to the parameter character of type CharType
or default if no counterpart is defined.
The second protected member function returns a pointer to the destination range of native characters converted from characters of type CharType
.
Remarks
The second protected member template function stores in dest
[ I
] the value do_narrow
( first
[ I
], default
), for I
in the interval [0, last
- first
).
Example
See the example for narrow, which calls do_narrow
.
ctype::do_scan_is
A virtual function called to locate the first character in a range that matches a specified mask.
virtual const CharType *do_scan_is(
mask maskVal,
const CharType* first,
const CharType* last) const;
Parameters
maskVal
The mask value to be matched by a character.
first
A pointer to the first character in the range to be scanned.
last
A pointer to the character immediately following the last character in the range to be scanned.
Return Value
A pointer to the first character in a range that does match a specified mask. If no such value exists, the function returns last.
Remarks
The protected member function returns the smallest pointer ptr
in the range [ first
, last
) for which do_is( maskVal
, * ptr
) is true.
Example
See the example for scan_is, which calls do_scan_is
.
ctype::do_scan_not
A virtual function called to locate the first character in a range that does not match a specified mask.
virtual const CharType *do_scan_not(
mask maskVal,
const CharType* first,
const CharType* last) const;
Parameters
maskVal
The mask value not to be matched by a character.
first
A pointer to the first character in the range to be scanned.
last
A pointer to the character immediately following the last character in the range to be scanned.
Return Value
A pointer to the first character in a range that doesn't match a specified mask. If no such value exists, the function returns last.
Remarks
The protected member function returns the smallest pointer ptr
in the range [ first
, last
) for which do_is( maskVal
, * ptr
) is false.
Example
See the example for scan_not, which calls do_scan_not
.
ctype::do_tolower
A virtual function called to convert a character or a range of characters to lower case.
virtual CharType do_tolower(CharType ch) const;
virtual const CharType *do_tolower(
CharType* first,
const CharType* last) const;
Parameters
ch
The character to be converted to lower case.
first
A pointer to the first character in the range of characters whose cases are to be converted.
last
A pointer to the character immediately following the last character in the range of characters whose cases are to be converted.
Return Value
The first protected member function returns the lowercase form of the parameter ch. If no lowercase form exists, it returns ch. The second protected member function returns last.
Remarks
The second protected member template function replaces each element first
[ I
], for I
in the interval [0, last
- first
), with do_tolower
( first
[ I
]).
Example
See the example for tolower, which calls do_tolower
.
ctype::do_toupper
A virtual function called to convert a character or a range of characters to upper case.
virtual CharType do_toupper(CharType ch) const;
virtual const CharType *do_toupper(
CharType* first,
const CharType* last) const;
Parameters
ch
The character to be converted to upper case.
first
A pointer to the first character in the range of characters whose cases are to be converted.
last
A pointer to character immediately following the last character in the range of characters whose cases are to be converted.
Return Value
The first protected member function returns the uppercase form of the parameter ch. If no uppercase form exists, it returns ch. The second protected member function returns last.
Remarks
The second protected member template function replaces each element first
[ I
], for I
in the interval [0, last
- first
), with do_toupper
( first
[ I
]).
Example
See the example for toupper, which calls do_toupper
.
ctype::do_widen
A virtual function called to converts a character of type char
in the native character set to the corresponding character of type CharType
used by a locale.
virtual CharType do_widen(char byte) const;
virtual const char *do_widen(
const char* first,
const char* last,
CharType* dest) const;
Parameters
byte
The character of type char
in the native character set to be converted.
first
A pointer to the first character in the range of characters to be converted.
last
A pointer to the character immediately following the last character in the range of characters to be converted.
dest
A pointer to the first character of type CharType
in the destination range that stores the converted range of characters.
Return Value
The first protected member function returns the character of type CharType
that corresponds to the parameter character of native type char
.
The second protected member function returns a pointer to the destination range of characters of type CharType
used by a locale converted from native characters of type char
.
Remarks
The second protected member template function stores in dest
[ I
] the value do_widen
( first
[ I
]), for I
in the interval [0, last
- first
).
Example
See the example for widen, which calls do_widen
.
ctype::is
Tests whether a single character has a particular attribute or classifies the attributes of each character in a range and stores them in an array.
bool is(mask maskVal, CharType ch) const;
const CharType *is(
const CharType* first,
const CharType* last,
mask* dest) const;
Parameters
maskVal
The mask value for which the character is to be tested.
ch
The character whose attributes are to be tested.
first
A pointer to the first character in the range whose attributes are to be classified.
last
A pointer to the character immediately following the last character in the range whose attributes are to be classified.
dest
A pointer to the beginning of the array where the mask values characterizing the attributes of each of the characters are to be stored.
Return Value
The first member function returns true
if the character tested has the attribute described by the mask value; false
if it fails to have the attribute.
The second member function returns a pointer to the last character in the range whose attributes are to be classified.
Remarks
The mask values classifying the attributes of the characters are provided by the class ctype_base Class, from which ctype derives. The first member function can accept expressions for its first parameter referred to as bitmasks and formed from the combination of mask values by the bitwise operators (|
, &
, ^
, ~
).
Example
// 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
Converts characters of type CharType
used by a locale to the corresponding characters of type char
in the native character set.
char narrow(CharType ch, char default = '\0') const;
const CharType* narrow(
const CharType* first,
const CharType* last,
char default,
char* dest) const;
Parameters
ch
The character of type Chartype
used by the locale to be converted.
default
The default value to be assigned by the member function to characters of type CharType
that do not have counterpart characters of type char
.
first
A pointer to the first character in the range of characters to be converted.
last
A pointer to the character immediately following the last character in the range of characters to be converted.
dest
A const pointer to the first character of type char
in the destination range that stores the converted range of characters.
Return Value
The first member function returns the native character of type char
that corresponds to the parameter character of type CharType default
if not counterpart is defined.
The second member function returns a pointer to the destination range of native characters converted from characters of type CharType
.
Remarks
The first member function returns do_narrow(ch
, default
). The second member function returns do_narrow (first
, last
, default
, dest
). Only the basic source characters are guaranteed to have a unique inverse image CharType
under narrow
. For these basic source characters, the following invariant holds: narrow
( widen ( c ), 0 ) == c.
Example
// 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
Locates the first character in a range that matches a specified mask.
const CharType *scan_is(
mask maskVal,
const CharType* first,
const CharType* last) const;
Parameters
maskVal
The mask value to be matched by a character.
first
A pointer to the first character in the range to be scanned.
last
A pointer to the character immediately following the last character in the range to be scanned.
Return Value
A pointer to the first character in a range that does match a specified mask. If no such value exists, the function returns last.
Remarks
The member function returns do_scan_is(maskVal
, first
, last
).
Example
// 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
Locates the first character in a range that does not match a specified mask.
const CharType *scan_not(
mask maskVal,
const CharType* first,
const CharType* last) const;
Parameters
maskVal
The mask value not to be matched by a character.
first
A pointer to the first character in the range to be scanned.
last
A pointer to the character immediately following the last character in the range to be scanned.
Return Value
A pointer to the first character in a range that does not match a specified mask. If no such value exists, the function returns last.
Remarks
The member function returns do_scan_not(maskVal
, first
, last
).
Example
// 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
Converts a character or a range of characters to lower case.
CharType tolower(CharType ch) const;
const CharType *tolower(CharType* first, const CharType* last) const;
Parameters
ch
The character to be converted to lower case.
first
A pointer to the first character in the range of characters whose cases are to be converted.
last
A pointer to the character immediately following the last character in the range of characters whose cases are to be converted.
Return Value
The first member function returns the lowercase form of the parameter ch. If no lowercase form exists, it returns ch.
The second member function returns last.
Remarks
The first member function returns do_tolower(ch
). The second member function returns do_tolower(first
, last
).
Example
// 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
Converts a character or a range of characters to upper case.
CharType toupper(CharType ch) const;
const CharType *toupper(CharType* first, const CharType* last) const;
Parameters
ch
The character to be converted to uppercase.
first
A pointer to the first character in the range of characters whose cases are to be converted.
last
A pointer to the character immediately following the last character in the range of characters whose cases are to be converted.
Return Value
The first member function returns the uppercase form of the parameter ch. If no uppercase form exists, it returns ch.
The second member function returns last.
Remarks
The first member function returns do_toupper(ch
). The second member function returns do_toupper( first
, last
).
Example
// 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
Converts a character of type char
in the native character set to the corresponding character of type CharType
used by a locale.
CharType widen(char byte) const;
const char *widen(const char* first, const char* last, CharType* dest) const;
Parameters
byte
The character of type char in the native character set to be converted.
first
A pointer to the first character in the range of characters to be converted.
last
A pointer to the character immediately following the last character in the range of characters to be converted.
dest
A pointer to the first character of type CharType
in the destination range that stores the converted range of characters.
Return Value
The first member function returns the character of type CharType
that corresponds to the parameter character of native type char
.
The second member function returns a pointer to the destination range of characters of type CharType
used by a locale converted from native characters of type char
.
Remarks
The first member function returns do_widen(byte
). The second member function returns do_widen(first
, last
, dest
).
Example
// 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!
See also
Povratne informacije
https://aka.ms/ContentUserFeedback.
Kmalu na voljo: V letu 2024 bomo ukinili storitev Težave v storitvi GitHub kot mehanizem za povratne informacije za vsebino in jo zamenjali z novim sistemom za povratne informacije. Za več informacij si oglejte:Pošlji in prikaži povratne informacije za