The class is an explicit specialization of template class ctype<CharType> to type char, describing an object that can serve as a locale facet to characterize various properties of a character of type char.
template<> class ctype<char>
    : public ctype_base
{
public:
    typedef char _Elem;
    typedef _Elem char_type;
    bool is(
        mask _Maskval,
        _Elem _Ch
    ) const;
    const _Elem* is(
        const _Elem *_First,
        const _Elem *_Last,
        mask *_Dest
    ) const;
    const _Elem* scan_is(
        mask _Maskval,
        const _Elem *_First,
        const _Elem *_Last
    ) const;
    const _Elem* scan_not(
        mask _Maskval,
        const _Elem *_First,
        const _Elem *_Last
    ) const;
    _Elem tolower(
        _Elem _Ch
    ) const;
    const _Elem* tolower(
        _Elem *_First,
        const _Elem *_Last
    ) const;
    _Elem toupper(
        _Elem _Ch
    ) const;
    const _Elem* toupper(
        _Elem *_First,
        const _Elem *_Last
    ) const;
    _Elem widen(
        char _Byte
    ) const;
    const _Elem* widen(
        const char *_First,
        const char *_Last,
        _Elem *_Dest
    ) const;
    const _Elem* _Widen_s(
        const char *_First,
        const char *_Last,
        _Elem *_Dest,
        size_t _Dest_size
    ) const;
    _Elem narrow(
        _Elem _Ch,
        char _Dflt = '\0'
    ) const;
    const _Elem* narrow(
        const _Elem *_First,
        const _Elem *_Last,
        char _Dflt,
        char *_Dest
    ) const;
    const _Elem* _Narrow_s(
        const _Elem *_First,
        const _Elem *_Last,
        char _Dflt,
        char *_Dest,
        size_t _Dest_size
    ) const;
    static locale::id& id;
    explicit  ctype(
        const mask *_Table = 0,
        bool _Deletetable = false,
        size_t _Refs = 0);
protected:
    virtual  ~ctype();
    //other protected members
};
Remarks
The explicit specialization differs from the template class in several ways:
- An object of class ctype<char> 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 (using operator delete[]) when the ctype<Elem> object is destroyed. 
- Its sole public constructor lets you specify tab, the ctype mask table, and del, the Boolean object that is true if the array should be deleted when the ctype<char> object is destroyed, as well as the reference-count parameter refs. 
- The protected member function table returns the stored ctype mask table. 
- The static member object table_size specifies the minimum number of elements in a ctype mask table. 
- The protected static member function classic_table( returns the ctype mask table appropriate to the "C" locale. 
- There are no protected virtual member functions do_is, do_scan_is, or do_scan_not. The corresponding public member functions perform the equivalent operations themselves. 
The member functions do_narrow and do_widen copy elements unaltered.
Requirements
Header: <locale>
Namespace: std
See Also
Reference
Thread Safety in the Standard C++ Library