std::ctype_byname
來自 cppreference.com
定義於標頭檔案 <locale> |
||
template< class CharT > class ctype_byname : public std::ctype<CharT>; |
||
std::ctype_byname
是一個 std::ctype facet,它封裝了在其構造時指定區域設定的字元分類規則。
目錄 |
[edit] 特化
標準庫保證提供以下特化
定義於標頭檔案
<locale> | |
std::ctype_byname<char> | 提供窄字元分類(使用表查詢進行字元分類) |
std::ctype_byname<wchar_t> | 提供寬字元分類 |
[edit] 巢狀型別
型別 | 定義 |
mask
|
typename std::ctype<CharT>::mask |
[edit] 成員函式
(建構函式) |
構造一個新的 ctype_byname facet(public member function) |
(解構函式) |
銷燬一個 ctype_byname facet(protected member function) |
std::ctype_byname::ctype_byname
explicit ctype_byname( const char* name, std::size_t refs = 0 ); |
||
explicit ctype_byname( const std::string& name, std::size_t refs = 0 ); |
(C++11 起) | |
為名稱為 name 的區域設定構造一個新的 std::ctype_byname
facet。
refs 用於資源管理:如果 refs == 0,則當最後一個持有它的 std::locale 物件被銷燬時,實現將銷燬該 facet。否則,該物件不會被銷燬。
引數
name | - | 區域設定的名稱 |
refs | - | 連結到 facet 的引用計數 |
std::ctype_byname::~ctype_byname
protected: ~ctype_byname(); |
||
銷燬 facet。
繼承自 std::ctype<CharT> (僅當 CharT
不是 char 時)
巢狀型別
型別 | 定義 |
char_type
|
CharT
|
資料成員
成員 | 描述 |
std::locale::id id [static] |
facet 的識別符號 |
成員函式
呼叫 do_is ( std::ctype<CharT> 的公共成員函式) | |
呼叫 do_scan_is ( std::ctype<CharT> 的公共成員函式) | |
呼叫 do_scan_not ( std::ctype<CharT> 的公共成員函式) | |
呼叫 do_toupper ( std::ctype<CharT> 的公共成員函式) | |
呼叫 do_tolower ( std::ctype<CharT> 的公共成員函式) | |
呼叫 do_widen ( std::ctype<CharT> 的公共成員函式) | |
呼叫 do_narrow ( std::ctype<CharT> 的公共成員函式) |
受保護的成員函式
[virtual] |
將一個或多個字元轉換為大寫 ( std::ctype<CharT> 的虛保護成員函式) |
[virtual] |
將一個或多個字元轉換為小寫 ( std::ctype<CharT> 的虛保護成員函式) |
[virtual] |
將一個或多個字元從 char 轉換為 CharT ( std::ctype<CharT> 的虛保護成員函式) |
[virtual] |
將一個或多個字元從 CharT 轉換為 char( std::ctype<CharT> 的虛保護成員函式) |
[virtual] |
分類一個字元或一個字元序列 ( std::ctype<CharT> 的虛保護成員函式) |
[virtual] |
在一個序列中定位第一個符合給定分類的字元 ( std::ctype<CharT> 的虛保護成員函式) |
[virtual] |
在一個序列中定位第一個不符合給定分類的字元 ( std::ctype<CharT> 的虛保護成員函式) |
繼承自 std::ctype<char> (僅當 CharT
是 char 時)
巢狀型別
型別 | 定義 |
char_type
|
char |
資料成員
成員 | 描述 |
std::locale::id id [static] |
facet 的識別符號 |
const std::size_t table_size [static] |
分類表的大小,至少為 256 |
成員函式
獲取字元分類表 ( std::ctype<char> 的公共成員函式) | |
[靜態] |
獲取“C”區域設定字元分類表 ( std::ctype<char> 的公共靜態成員函式) |
使用分類表對字元或字元序列進行分類 ( std::ctype<char> 的公共成員函式) | |
使用分類表在序列中定位第一個符合給定分類的字元 ( std::ctype<char> 的公共成員函式) | |
使用分類表在序列中定位第一個不符合給定分類的字元 ( std::ctype<char> 的公共成員函式) | |
呼叫 do_toupper ( std::ctype<CharT> 的公共成員函式) | |
呼叫 do_tolower ( std::ctype<CharT> 的公共成員函式) | |
呼叫 do_widen ( std::ctype<CharT> 的公共成員函式) | |
呼叫 do_narrow ( std::ctype<CharT> 的公共成員函式) |
受保護的成員函式
[virtual] |
將一個或多個字元轉換為大寫 ( std::ctype<CharT> 的虛保護成員函式) |
[virtual] |
將一個或多個字元轉換為小寫 ( std::ctype<CharT> 的虛保護成員函式) |
[virtual] |
將一個或多個字元從 char 轉換為 CharT ( std::ctype<CharT> 的虛保護成員函式) |
[virtual] |
將一個或多個字元從 CharT 轉換為 char( std::ctype<CharT> 的虛保護成員函式) |
繼承自 std::ctype_base
巢狀型別
型別 | 定義 |
mask
|
未指定的 BitmaskType 型別(列舉、整數型別或位集) |
成員常量
space [靜態] |
標識空白字元分類的 mask 值(public static 成員常量) |
print [靜態] |
標識可列印字元分類的 mask 值(public static 成員常量) |
cntrl [靜態] |
標識控制字元分類的 mask 值(public static 成員常量) |
upper [靜態] |
標識大寫字元分類的 mask 值(public static 成員常量) |
lower [靜態] |
標識小寫字元分類的 mask 值(public static 成員常量) |
alpha [靜態] |
標識字母字元分類的 mask 值(public static 成員常量) |
digit [靜態] |
標識數字字元分類的 mask 值(public static 成員常量) |
punct [靜態] |
標識標點字元分類的 mask 值(public static 成員常量) |
xdigit [靜態] |
標識十六進位制數字字元分類的 mask 值(public static 成員常量) |
blank [靜態] (C++11) |
標識空白字元分類的 mask 值(public static 成員常量) |
alnum [靜態] |
alpha | digit (public static 成員常量) |
graph [靜態] |
alnum | punct (public static 成員常量) |
[edit] 注意
std::ctype_byname<char> 在 <locale> 的概要中被錯誤地宣告為顯式特化,並且該宣告已根據 LWG issue 1298 的決議刪除,但它仍然是必需的特化,就像 std::ctype_byname<wchar_t> 一樣。
[edit] 示例
執行此程式碼
#include <iostream> #include <locale> int main() { wchar_t c = L'\u00de'; // capital letter thorn std::locale loc("C"); std::cout << "isupper('Þ', C locale) returned " << std::boolalpha << std::isupper(c, loc) << '\n'; loc = std::locale(loc, new std::ctype_byname<wchar_t>("en_US.utf8")); std::cout << "isupper('Þ', C locale with Unicode ctype) returned " << std::boolalpha << std::isupper(c, loc) << '\n'; }
輸出
isupper('Þ', C locale) returned false isupper('Þ', C locale with Unicode ctype) returned true
[edit] 缺陷報告
下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。
缺陷報告 | 應用於 | 釋出時的行為 | 正確的行為 |
---|---|---|---|
LWG 16 | C++98 | 顯式特化 std::ctype_byname<char> 的定義 錯誤地指定了 do_narrow 的名稱和引數列表 |
已更正 |
LWG 616 | C++98 | 在 mask 的定義中缺少 typename 消歧義符 |
已新增 |
[edit] 另請參閱
定義字元分類表 (類模板) | |
std::ctype 對於型別 char 的特化 (類模板特化) |