名稱空間
變體
操作

std::ctype_byname

來自 cppreference.com
< cpp‎ | locale
 
 
 
 
定義於標頭檔案 <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) [edit]
(解構函式)
銷燬一個 ctype_byname facet
(protected member function) [edit]

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> 的公共成員函式) [edit]
呼叫 do_scan_is
(std::ctype<CharT> 的公共成員函式) [edit]
呼叫 do_scan_not
(std::ctype<CharT> 的公共成員函式) [edit]
呼叫 do_toupper
(std::ctype<CharT> 的公共成員函式) [edit]
呼叫 do_tolower
(std::ctype<CharT> 的公共成員函式) [edit]
呼叫 do_widen
(std::ctype<CharT> 的公共成員函式) [edit]
呼叫 do_narrow
(std::ctype<CharT> 的公共成員函式) [edit]

受保護的成員函式

[virtual]
將一個或多個字元轉換為大寫
(std::ctype<CharT> 的虛保護成員函式) [edit]
[virtual]
將一個或多個字元轉換為小寫
(std::ctype<CharT> 的虛保護成員函式) [edit]
[virtual]
將一個或多個字元從 char 轉換為 CharT
(std::ctype<CharT> 的虛保護成員函式) [edit]
[virtual]
將一個或多個字元從 CharT 轉換為 char
(std::ctype<CharT> 的虛保護成員函式) [edit]
[virtual]
分類一個字元或一個字元序列
(std::ctype<CharT> 的虛保護成員函式) [edit]
[virtual]
在一個序列中定位第一個符合給定分類的字元
(std::ctype<CharT> 的虛保護成員函式) [edit]
[virtual]
在一個序列中定位第一個不符合給定分類的字元
(std::ctype<CharT> 的虛保護成員函式) [edit]

繼承自 std::ctype<char> (僅當 CharTchar 時)

巢狀型別

型別 定義
char_type char

資料成員

成員 描述
std::locale::id id [static] facet 的識別符號
const std::size_t table_size [static] 分類表的大小,至少為 256

成員函式

獲取字元分類表
(std::ctype<char> 的公共成員函式) [edit]
獲取“C”區域設定字元分類表
(std::ctype<char> 的公共靜態成員函式) [edit]
使用分類表對字元或字元序列進行分類
(std::ctype<char> 的公共成員函式) [edit]
使用分類表在序列中定位第一個符合給定分類的字元
(std::ctype<char> 的公共成員函式) [edit]
使用分類表在序列中定位第一個不符合給定分類的字元
(std::ctype<char> 的公共成員函式) [edit]
呼叫 do_toupper
(std::ctype<CharT> 的公共成員函式) [edit]
呼叫 do_tolower
(std::ctype<CharT> 的公共成員函式) [edit]
呼叫 do_widen
(std::ctype<CharT> 的公共成員函式) [edit]
呼叫 do_narrow
(std::ctype<CharT> 的公共成員函式) [edit]

受保護的成員函式

[virtual]
將一個或多個字元轉換為大寫
(std::ctype<CharT> 的虛保護成員函式) [edit]
[virtual]
將一個或多個字元轉換為小寫
(std::ctype<CharT> 的虛保護成員函式) [edit]
[virtual]
將一個或多個字元從 char 轉換為 CharT
(std::ctype<CharT> 的虛保護成員函式) [edit]
[virtual]
將一個或多個字元從 CharT 轉換為 char
(std::ctype<CharT> 的虛保護成員函式) [edit]

繼承自 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] 另請參閱

定義字元分類表
(類模板) [edit]
std::ctype 對於型別 char 的特化
(類模板特化) [edit]