GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
std::ctype(3) C++ Standard Libary std::ctype(3)

std::ctype - std::ctype


Defined in header <locale>
template<>
class ctype<char>;


This specialization of std::ctype encapsulates character classification features for
type char. Unlike general-purpose std::ctype, which uses virtual functions, this
specialization uses table lookup to classify characters (which is generally faster).


The base class std::ctype<char> implements character classification equivalent to
the minimal "C" locale. The classification rules can be extended or modified if
constructed with a non-default classification table argument, if constructed as
std::ctype_byname<char> or as a user-defined derived facet. All std::istream
formatted input functions are required to use std::ctype<char> for character
classing during input parsing.


std-ctype char-inheritance.svg


Inheritance diagram

Member types


Member type Definition
char_type char


constructor constructs a new std::ctype<char> facet
(public member function)
destructor destructs a std::ctype<char> facet
(protected member function)
table obtains the character classification table
(public member function)
classic_table obtains the "C" locale character classification table
[static] (public static member function)
classifies a character or a character sequence, using the
is classification table
(public member function)
locates the first character in a sequence that conforms to given
scan_is classification, using the classification table
(public member function)
locates the first character in a sequence that fails given
scan_not classification, using the classification table
(public member function)
toupper invokes do_toupper
(public member function of std::ctype<CharT>)
tolower invokes do_tolower
(public member function of std::ctype<CharT>)
widen invokes do_widen
(public member function of std::ctype<CharT>)
narrow invokes do_narrow
(public member function of std::ctype<CharT>)


do_toupper converts a character or characters to uppercase
[virtual] (virtual protected member function of std::ctype<CharT>)
do_tolower converts a character or characters to lowercase
[virtual] (virtual protected member function of std::ctype<CharT>)
do_widen converts a character or characters from char to charT
[virtual] (virtual protected member function of std::ctype<CharT>)
do_narrow converts a character or characters from charT to char
[virtual] (virtual protected member function of std::ctype<CharT>)


static std::locale::id id id of the locale
[static] (public static member constant)
static const std::size_t table_size size of the classification table, at least 256
[static] (public static member constant)

Inherited from std::ctype_base

Member types


Type Definition
mask unspecified bitmask type (enumeration, integer type, or bitset)


space the value of mask identifying whitespace character classification
[static] (public static member constant)
print the value of mask identifying printable character classification
[static] (public static member constant)
cntrl the value of mask identifying control character classification
[static] (public static member constant)
upper the value of mask identifying uppercase character classification
[static] (public static member constant)
lower the value of mask identifying lowercase character classification
[static] (public static member constant)
alpha the value of mask identifying alphabetic character classification
[static] (public static member constant)
digit the value of mask identifying digit character classification
[static] (public static member constant)
punct the value of mask identifying punctuation character classification
[static] (public static member constant)
xdigit the value of mask identifying hexadecimal digit character
[static] classification
(public static member constant)
blank the value of mask identifying blank character classification
[static] (C++11) (public static member constant)
alnum alpha | digit
[static] (public static member constant)
graph alnum | punct
[static] (public static member constant)


The following example demonstrates modification of ctype<char> to tokenize
comma-separated values

// Run this code


#include <iostream>
#include <vector>
#include <locale>
#include <sstream>


// This ctype facet classifies commas and endlines as whitespace
struct csv_whitespace : std::ctype<char> {
static const mask* make_table()
{
// make a copy of the "C" locale table
static std::vector<mask> v(classic_table(), classic_table() + table_size);
v[','] |= space; // comma will be classified as whitespace
v[' '] &= ~space; // space will not be classified as whitespace
return &v[0];
}
csv_whitespace(std::size_t refs = 0) : ctype(make_table(), false, refs) {}
};


int main()
{
std::string in = "Column 1,Column 2,Column 3\n123,456,789";
std::string token;


std::cout << "default locale:\n";
std::istringstream s1(in);
while(s1 >> token)
std::cout << " " << token << '\n';


std::cout << "locale with modified ctype:\n";
std::istringstream s2(in);
s2.imbue(std::locale(s2.getloc(), new csv_whitespace));
while(s2 >> token)
std::cout << " " << token<< '\n';
}


default locale:
Column
1,Column
2,Column
3
123,456,789
locale with modified ctype:
Column 1
Column 2
Column 3
123
456
789


ctype defines character classification tables
(class template)
ctype_base defines character classification categories
(class template)
ctype_byname creates a ctype facet for the named locale
(class template)

2022.07.31 http://cppreference.com

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.