char_type
·
ctype
·
do_is
·
do_narrow
·
do_scan_is
·
do_scan_not
·
do_tolower
·
do_toupper
·
do_widen
·
is
·
narrow
·
scan_is
·
scan_not
·
tolower
·
toupper
·
widen
template<class E>
class ctype : public locale::facet, public ctype_base {
public:
typedef E char_type;
explicit ctype(size_t refs = 0);
bool is(mask msk, E ch) const;
const E *is(const E *first, const E *last, mask *dst) const;
const E *scan_is(mask msk, const E *first, const E *last) const;
const E *scan_not(mask msk, const E *first, const E *last) const;
E toupper(E ch) const;
const E *toupper(E *first, E *last) const;
E tolower(E ch) const;
const E *tolower(E *first, E *last) const;
E widen(char ch) const;
const char *widen(char *first, char *last, E *dst) const;
char narrow(E ch, char dflt) const;
const E *narrow(const E *first, const E *last,
char dflt, char *dst) const;
static locale::id id;
protected:
~ctype();
virtual bool do_is(mask msk, E ch) const;
virtual const E *do_is(const E *first, const E *last,
mask *dst) const;
virtual const E *do_scan_is(mask msk, const E *first,
const E *last) const;
virtual const E *do_scan_not(mask msk, const E *first,
const E *last) const;
virtual E do_toupper(E ch) const;
virtual const E *do_toupper(E *first, E *last) const;
virtual E do_tolower(E ch) const;
virtual const E *do_tolower(E *first, E *last) const;
virtual E do_widen(char ch) const;
virtual const char *do_widen(char *first, char *last, E *dst) const;
virtual char do_narrow(E ch, char dflt) const;
virtual const E *do_narrow(const E *first, const E *last,
char dflt, char *dst) const;
};
The template class describes an object that can serve as a locale facet, to characterize various properties of a
"character" (element) of type E
. Such a facet also converts between sequences of E
elements and sequences of char.
An object of class ctype<E>
stores a pointer to the first element of a ctype mask table, an array of UCHAR_MAX
+ 1
elements of type ctype_base::
mask
. It also stores a Boolean object that indicates whether the array should be deleted
when the ctype<E>
object is destroyed.
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
.
The Standard C++ library defines two explicit specializations of this template class:
ctype<char>
, whose differences are described separatelyctype<wchar_t<
, which treats elements as wide charactersIn this implementation, other specializations of template class ctype<E>
:
ch
of type E
to a value of type char with the expression (char)ch
. c
of type char to a value of type E
with the expression E(c)
.All other operations are performed on char values the same as for the specialization ctype<char>
.