名稱空間
變體
操作

std::numpunct

來自 cppreference.com
< cpp‎ | locale
 
 
 
 
 
定義於標頭檔案 <locale>
template< class CharT >
class numpunct;

`std::numpunct` facet 封裝了數字標點偏好設定。流 I/O 操作透過 std::num_getstd::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'
cpp/locale/locale/facetstd-numpunct-inheritance.svg

繼承圖

目錄

[編輯] 特化

標準庫保證提供以下特化(它們 要求由任何區域設定物件實現

定義於標頭檔案 <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_truenamedo_falsename
(public member function) [編輯]

[編輯] 保護成員函式

提供用作小數點的字元
(virtual protected member function) [編輯]
提供用作千位分隔符的字元
(virtual protected member function) [編輯]
[虛擬]
提供每對千位分隔符之間的數字個數
(virtual protected member function) [編輯]
提供用作布林值 truefalse 名稱的字串
(virtual protected member function) [編輯]

[編輯] 示例

以下示例更改了布林值 truefalse 的字串表示形式

#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
(類模板)