std::numpunct
來自 cppreference.com
定義於標頭檔案 <locale> |
||
template< class CharT > class numpunct; |
||
`std::numpunct` facet 封裝了數字標點偏好設定。流 I/O 操作透過 std::num_get 和 std::num_put 使用 `std::numpunct` 來解析數字輸入和格式化數字輸出。
`std::numpunct` 支援的數字具有以下所述的格式。其中 `digit` 表示由 `fmtflags` 引數值指定的基數集,`thousands-sep` 和 `decimal-point` 分別是 thousands_sep() 和 decimal_point() 函式的結果。
整數值的格式如下:
integer ::= [sign] units sign ::= plusminus plusminus ::= '+' | '-' units ::= digits [thousands-sep units] digits ::= digit [digits]
`thousand-sep` 之間的數字個數(`digits` 的最大大小)由 grouping() 的結果指定。
浮點值的格式如下:
floatval ::= [sign] units [decimal-point [digits]] [e [sign] digits] | [sign] decimal-point digits [e [sign] digits] e ::= 'e' | 'E'
繼承圖
目錄 |
[編輯] 特化
標準庫保證提供以下特化(它們 要求由任何區域設定物件實現)
定義於標頭檔案
<locale> | |
std::numpunct<char> | 提供“C”語言環境偏好的等價物 |
std::numpunct<wchar_t> | 提供“C”語言環境偏好的寬字元等價物 |
[編輯] 巢狀型別
型別 | 定義 |
char_type
|
CharT
|
string_type
|
std::basic_string<CharT> |
[編輯] 資料成員
成員 | 描述 |
std::locale::id id [static] |
facet 的識別符號 |
[編輯] 成員函式
構造一個新的 numpunct facet(public member function) | |
銷燬一個 numpunct facet(protected member function) | |
呼叫 do_decimal_point (public member function) | |
呼叫 do_thousands_sep (public member function) | |
呼叫 do_grouping (public member function) | |
呼叫 do_truename 或 do_falsename (public member function) |
[編輯] 保護成員函式
[虛擬] |
提供用作小數點的字元 (virtual protected member function) |
[虛擬] |
提供用作千位分隔符的字元 (virtual protected member function) |
[虛擬] |
提供每對千位分隔符之間的數字個數 (virtual protected member function) |
提供用作布林值 true 和 false 名稱的字串 (virtual protected member function) |
[編輯] 示例
以下示例更改了布林值 true 和 false 的字串表示形式
執行此程式碼
#include <iostream> #include <locale> struct french_bool : std::numpunct<char> { string_type do_truename() const override { return "vrai"; } string_type do_falsename() const override { return "faux"; } }; int main() { std::cout << "default locale: " << std::boolalpha << true << ", " << false << '\n'; std::cout.imbue(std::locale(std::cout.getloc(), new french_bool)); std::cout << "locale with modified numpunct: " << std::boolalpha << true << ", " << false << '\n'; }
輸出
default locale: true, false locale with modified numpunct: vrai, faux
[編輯] 缺陷報告
下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。
缺陷報告 | 應用於 | 釋出時的行為 | 正確的行為 |
---|---|---|---|
LWG 338 | C++98 | `sign` 令牌允許 `+` 或 `-` 後面有一個可選的空白 | 已移除空白 |
[編輯] 另請參閱
為指定語言環境建立一個 numpunct facet (類模板) |