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 的第一個虛擬 protected 成員函式產生期間序元件由 _Val的值會產生整數輸出欄位。 函式傳回指定下一個的 Iterator 插入所產生之整數輸出欄位以外的項目。
整數輸出欄位是由列印功能所用的相同規則產生為產生對檔案的一系列的 char 項目。 每個這類字元項目由簡單,一對一對應假設對應到型別 CharType 的一個對等項目。 其中列印功能填補有或空間的欄位或數字 0,不過 do_put ,使用 fill。 判斷對等列印轉換規格如下:
如果 iosbase。旗標。 &ios_base::basefield == ios_base::10 月,轉換規格 lo。
如果 iosbase.flags &ios_base::basefield == ios_base::六個,轉換規格 lx。
否則,轉換規格 ld。
如果 iosbase。寬度 是零,這個值的欄位寬度加上。 函式會呼叫 iosbase。將欄位寬度的width(0) 為零。
時,才需要項目 的 最小數目指定輸出欄位小於 iosbase,填補問題發生。寬度。 這類填補包括 N – fillwidth 重複序列。 然後填補發生如下:
如果 iosbase。flags &ios_base::adjustfield == ios_base::左,旗標 – 前面。(填補在產生的文字後發生)。
如果 iosbase.flags &ios_base::adjustfield == ios_base::內部,旗標 0 前面。(用於數字輸出欄位,邊框距離會有 0 的列印功能填補) 的位置。
否則,其他旗標不會加在前面。(填補時發生,它會在產生的序列之前)。
最終:
如果 iosbase。flags &ios_base::showpos 為非零,旗標 + 會附加到轉換規格。
如果 iosbase。flags & ios_base::showbase 為非零,旗標 # 會附加到轉換規格。
地區設定 facet進一步取決於整數輸出欄位的格式呼叫傳回的facuse_facet <numpunct<Elem>(iosbase。getloc)。 尤其是:
fac。群組 判斷數字如何在任何小數點左邊群組
fac。thousands_sep 判斷在任何小數點左邊分隔數字群組的順序
如果 fac沒有加上群組條件約束。grouping (它的第一個項目具有值 CHAR_MAX),則不執行個體 fac。thousands_sep 在輸出欄位產生。 否則,分隔符號列印在轉換發生後插入。
第二個虛擬 protected 成員函式:
virtual iter_type do_put(iter_type _Next, ios_base& _Iosbase,
CharType _Fill, unsigned long _Val) const;
一般作業的第一個相同,不過,它是 lu取代 ld 的轉換規格。
第三個虛擬 protected 成員函式:
virtual iter_type do_put(iter_type _Next, ios_base& _Iosbase,
CharType _Fill, double _Val) const;
一般作業的第一個相同,不過,它由 val的值產生浮點輸出欄位。fac。decimal_point 判斷小數位數分隔整數數字的序列。 判斷對等列印轉換規格如下:
如果 iosbase。flags &ios_base::floatfield == ios_base::固定,轉換規格 lf。
如果 iosbase。flags &ios_base::floatfield == ios_base::科學,轉換規格是 le。 如果 iosbase。flags &ios_base::大寫 為非零, e 用 E. 取代。
否則,轉換規格 lg。 如果 iosbase。flags &ios_base::uppercase 為非零, g 用 G. 取代。
如果 iosbase。flags &ios_base::fixed 為非零值,或者如果 iosbase。精確度。 大於零,與值 iosbase的整數位數。precision 會附加到轉換規格。 填補產生相同的行為像整數輸出欄位。 填補字元是 fill。 最終:
如果 iosbase。flags &ios_base::showpos 為非零,旗標 + 會附加到轉換規格。
如果 iosbase。flags &ios_base::showpoint 為非零,旗標 # 會附加到轉換規格。
第四個虛擬 protected 成員函式:
virtual iter_type do_put(iter_type _Next, ios_base& _Iosbase,
CharType _Fill, long double _Val) const;
產生相同的行為,三,除了在轉換規格的限定詞 l 用 L. 取代。
第五個虛擬 protected 成員函式:
virtual iter_type do_put(iter_type _Next, ios_base& _Iosbase,
CharType _Fill, const void *_Val) const;
產生相同的行為,第一個,除了呈現規格是 p**,** 加上必要的有限定詞指定填補。
第六個虛擬 protected 成員函式:
virtual iter_type do_put(iter_type _Next, ios_base& _Iosbase,
CharType _Fill, bool _Val) const;
一般作業的第一個相同,不過,它會從 _Val的 Boolean 輸出欄位。
Boolean 輸出欄位兩種形式中的一個。 如果 iosbase。flags &ios_base::boolalpha 是 false,成員函式會傳回 do_put(_Next、_Iosbase, _Fill, (long)_Val),通常會導致產生的序列 0 ( false) 或 1 ( true)。 否則,產生的序列是 fac。falsename) ( false),或者 fac。truename ( true)。
第七個虛擬 protected 成員函式:
virtual iter_type do_put(iter_type next, ios_base& iosbase,
Elem fill, long long val) const;
一般作業的第一個相同,不過,它是 lld取代 ld 的轉換規格。
第八個虛擬 protected 成員函式:
virtual iter_type do_put(iter_type next, ios_base& iosbase,
Elem fill, unsigned long long val) const;
一般作業的第一個相同,不過,它以 llu取代 ld的轉換規格。
範例
請參閱 放置範例,呼叫 do_put。
需求
標題: <地區設定>
命名空間: std