在线文档教程
C++
本土化 | Localizations

std::ctype<char>

STD::Ctype<char>

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

这种专业化std::ctype封装类型的字符分类特性char.不像一般用途std::ctype,它使用虚拟函数,这种专门化使用表查找来对字符%28进行分类,这通常要快于%29。

基类std::ctype<char>实现与最小“C”区域设置等效的字符分类。如果使用非默认的分类表参数构造,则可以扩展或修改分类规则,如果构造为std::ctype_byname<char>或者作为用户定义的派生面。全std::istream需要使用格式化的输入函数。std::ctype<char>用于输入解析期间的字符分类。

二次

二次

继承图

成员类型

Member typeDefinition
char_typechar

成员函数

(constructor)constructs a new std::ctype facet (public member function)
(destructor)destructs a std::ctype<char> facet (protected member function)
tableobtains the character classification table (public member function)
classic_table staticobtains the "C" locale character classification table (public static member function)
isclassifies a character or a character sequence, using the classification table (public member function)
scan_islocates the first character in a sequence that conforms to given classification, using the classification table (public member function)
scan_notlocates the first character in a sequence that fails given classification, using the classification table (public member function)
toupperinvokes do_toupper (public member function of std::ctype)
tolowerinvokes do_tolower (public member function of std::ctype)
wideninvokes do_widen (public member function of std::ctype)
narrowinvokes do_narrow (public member function of std::ctype)

受保护成员函数

do_toupper virtualconverts a character or characters to uppercase (virtual protected member function of std::ctype)
do_tolower virtualconverts a character or characters to lowercase (virtual protected member function of std::ctype)
do_widen virtualconverts a character or characters from char to charT (virtual protected member function of std::ctype)
do_narrow virtualconverts a character or characters from charT to char (virtual protected member function of std::ctype)

成员对象

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

从STD::Ctype继承而来[医]底座

成员类型

TypeDefinition
maskunspecified bitmask type (enumeration, integer type, or bitset)

成员常数

space staticthe value of mask identifying whitespace character classification (public static member constant)
print staticthe value of mask identifying printable character classification (public static member constant)
cntrl staticthe value of mask identifying control character classification (public static member constant)
upper staticthe value of mask identifying uppercase character classification (public static member constant)
lower staticthe value of mask identifying lowercase character classification (public static member constant)
alpha staticthe value of mask identifying alphabetic character classification (public static member constant)
digit staticthe value of mask identifying digit character classification (public static member constant)
punct staticthe value of mask identifying punctuation character classification (public static member constant)
xdigit staticthe value of mask identifying hexadecimal digit character classification (public static member constant)
blank staticthe value of mask identifying blank character classification (public static member constant)
alnum staticalpha | digit (public static member constant)
graph staticalnum | punct (public static member constant)

下面的示例演示修改Ctype<char>若要标记逗号分隔的值,请执行以下操作。

二次

#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

二次

另见

ctypedefines character classification tables (class template)
ctype_basedefines character classification categories (class template)
ctype_bynamecreates a ctype facet for the named locale (class template)

© cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

http://en.cppreference.com/w/cpp/locale/ctype[医]焦耳