num_put::do_put
呼叫將數字轉換成 CharType的順序表示數字的虛擬函式為指定地區設定格式化。
virtual iter_type do_put(
iter_type _Dest,
ios_base& _Iosbase,
_Elem _Fill,
bool _Val
) const;
virtual iter_type do_put(
iter_type _Dest,
ios_base& _Iosbase,
_Elem _Fill,
long _Val
) const;
virtual iter_type do_put(
iter_type _Dest,
ios_base& _Iosbase,
_Elem _Fill,
unsigned long _Val
) const;
virtual iter_type do_put(
iter_type _Dest,
ios_base& _Iosbase,
_Elem _Fill,
double _Val
) const;
virtual iter_type do_put(
iter_type _Dest,
ios_base& _Iosbase,
_Elem _Fill,
long double _Val
) const;
virtual iter_type do_put(
iter_type _Dest,
ios_base& _Iosbase,
_Elem _Fill,
const void * _Val
) const;
virtual iter_type do_put(
iter_type _Dest,
ios_base& _Iosbase,
_Elem _Fill,
const long long _Val
) const; virtual iter_type do_put(
iter_type _Dest,
ios_base& _Iosbase,
_Elem _Fill,
const unsigned long long _Val
) const;
參數
_Next
解決的 Iterator 插入字串的第一個項目。_Iosbase
指定包含 numpunct 之 facet 地區設定的標點符號輸出和旗標格式化輸出的資料流。_Fill
指定間隔所使用的字元。_Val
要輸出的數字或布林型別。
傳回值
輸出 Iterator 在最後一個項目以外的位置上產生的電子郵件地址。
備註
第一個受保護的虛擬成員函式產生開始 _Next 時的順序。 _Val元件的值產生整數輸出資料行。 函式會傳回指定下一個 Iterator 的位置插入產生的整數輸出資料行以外的項目。
整數輸出資料行是由列印功能所用的相同規則產生於產生之檔案的一系列 char 項目。 每一個這類字元項目由簡單,一對一對應假設對應至型別 CharType 的對等項目。 其中是列印功能填補有或空格的欄位或數字 0,不過, do_put 使用 fill。 判斷對等的列印轉換規格如下所示:
如果 iosbase。旗標 _&;RYAN ios_base::basefield == ios_base::10 月,轉換規格是 lo。
如果 iosbase.flags _&;RYAN ios_base::basefield == ios_base::hex,轉換規格是 lx。
否則,轉換規格是 ld。
如果 iosbase。寬度 為非零,則其值的資料行寬度加上。 函式會呼叫 iosbase。重設資料行寬度的width(0) 為零。
時,才需要項目 N 的 最少位數指定輸出資料行的 iosbase,小於填補時發生。寬度。 這類填補包括 N – fillwidth 複本序列。 然後邊框距離會依下列順序進行:
如果 iosbase。flags _&;RYAN ios_base::adjustfield == ios_base::以滑鼠左鍵,旗標 – 前面。 (填補在產生的文字後發生)。
如果 iosbase.flags _&;RYAN ios_base::adjustfield == ios_base::內部,旗標 0 前面。 (如需數字輸出資料行,以產生具有 0 的列印功能填補) 的位置。
否則,則需要其他旗標不會預先規劃。 (填補在所產生的序列之前發生)。
最後:
如果 iosbase。flags _&;RYAN ios_base::showpos 為非零值 (Nonzero),旗標 + 預先規劃給轉換規格。
如果 iosbase。flags _&;RYAN ios_base::showbase 為非零值 (Nonzero),旗標 # 預先規劃給轉換規格。
地區設定 Facet進一步取決於整數輸出資料行的格式呼叫中傳回的facuse_facet <numpunct<Elem> (iosbase。getloc)。 尤其是:
fac。群組 判斷數字如何在任何小數點左邊分組
fac。thousands_sep 判斷在任何小數點左邊分隔數字群組的順序
如果 fac沒有加上群組的條件約束。grouping (其第一個項目的值 CHAR_MAX),就不會有執行個體 fac。thousands_sep 在輸出資料行產生。 否則,列印,在轉換發生後,分隔符號插入。
第二個受保護的虛擬成員函式:
virtual iter_type do_put(iter_type _Next, ios_base& _Iosbase,
CharType _Fill, unsigned long _Val) const;
正常運作方式和第一個增益集的相同,不過,前者會 lu取代 ld 之轉換規格。
第三個受保護的虛擬成員函式:
virtual iter_type do_put(iter_type _Next, ios_base& _Iosbase,
CharType _Fill, double _Val) const;
正常運作方式和第一個增益集的相同,不過,前者是由 val的值產生浮點輸出資料行。fac。decimal_point 判斷小數位數分隔整數數字的序列。 判斷對等的列印轉換規格如下所示:
如果 iosbase。flags _&;RYAN ios_base::floatfield == ios_base::內建,轉換規格是 lf。
如果 iosbase。flags _&;RYAN ios_base::floatfield == ios_base::科學記號,轉換規格是 le。 如果 iosbase。flags _&;RYAN ios_base::大寫 為非零值 (Nonzero), e 用 E. 取代。
否則,轉換規格是 lg。 如果 iosbase。flags _&;RYAN ios_base::uppercase 為非零值 (Nonzero), g 使用 G. 取代。
如果 iosbase。flags _&;RYAN ios_base::fixed 不是零,或者 iosbase。精確度。 小於零,值為 iosbase之精確度大於。precision 預先規劃給轉換規格。 填補相同的行為就像整數輸出資料行的。 填補字元是 fill。 最後:
如果 iosbase。flags _&;RYAN ios_base::showpos 為非零值 (Nonzero),旗標 + 預先規劃給轉換規格。
如果 iosbase。flags _&;RYAN ios_base::showpoint 為非零值 (Nonzero),旗標 # 預先規劃給轉換規格。
第四個受保護的虛擬成員函式:
virtual iter_type do_put(iter_type _Next, ios_base& _Iosbase,
CharType _Fill, long double _Val) const;
相同的行為三,不同之處在於,在轉換規格的限定詞 l 以 L. 取代。
第五個受保護的虛擬成員函式:
virtual iter_type do_put(iter_type _Next, ios_base& _Iosbase,
CharType _Fill, const void *_Val) const;
相同的行為,不同的是,第一個轉換規格是 p**,** 加上任何需要的限定詞指定填補。
第六個受保護的虛擬成員函式:
virtual iter_type do_put(iter_type _Next, ios_base& _Iosbase,
CharType _Fill, bool _Val) const;
正常運作方式和第一個增益集的相同,不過,前者會從 _Val的布林值 (Boolean) 輸出資料行。
布林值 (Boolean) 輸出資料行是下列兩種形式中的一個。 如果 iosbase。flags _&;RYAN ios_base::boolalpha 是 false,成員函式傳回 do_put(_Next、_Iosbase, _Fill,long()_Val),通常會產生一個產生的序列 false0 (適用於) 或 1 ( true)。 否則,會將產生的序列是 fac。falsename) ( false),或 fac。truename ( true)。
第七個受保護的虛擬成員函式:
virtual iter_type do_put(iter_type next, ios_base& iosbase,
Elem fill, long long val) const;
正常運作方式和第一個增益集的相同,不過,前者會 lld取代 ld 之轉換規格。
第八個受保護的虛擬成員函式:
virtual iter_type do_put(iter_type next, ios_base& iosbase,
Elem fill, unsigned long long val) const;
正常運作方式和第一個增益集的相同,不過,前者會 llu取代 ld之轉換規格。
範例
為 將"範例"一節,呼叫 do_put。
需求
標題: <locale>
命名空間: std