money_put 類別
類別範本描述可作為地區設定 Facet 的物件,以控制貨幣值轉換成 型 CharType
別序列的轉換。
語法
template <class CharType,
class OutputIterator = ostreambuf_iterator<CharType>>
class money_put : public locale::facet;
參數
CharType
程式內用於編碼地區設定字元的類型。
OutputIterator
貨幣 put 函式將其輸出寫入其中的迭代器類型。
備註
如同所有地區設定 facet,靜態物件識別碼有初始儲存值零。 第一次嘗試存取它的儲存值時,會在 id 中儲存一個唯一的正值。
建構函式
建構函式 | 描述 |
---|---|
money_put | money_put 類型物件的建構函式。 |
Typedefs
類型名稱 | 描述 |
---|---|
char_type | 類型,用來描述由地區設定使用的字元。 |
iter_type | 描述輸出迭代器的類型。 |
string_type | 類型,描述包含 CharType 類型字元的字串。 |
成員函式
成員函數 | 描述 |
---|---|
do_put | 虛擬函式,呼叫以將數字或字串轉換為代表貨幣值的字元序列。 |
put | 將數字或字串轉換為代表貨幣值的字元序列。 |
需求
Header:<locale>
命名空間:std
money_put::char_type
類型,用來描述由地區設定使用的字元。
typedef CharType char_type;
備註
此類型與範本參數 CharType 同義。
money_put::d o_put
虛擬函式,呼叫以將數字或字串轉換為代表貨幣值的字元序列。
virtual iter_type do_put(
iter_type next,
bool _Intl,
ios_base& _Iosbase,
CharType _Fill,
const string_type& val) const;
virtual iter_type do_put(
iter_type next,
bool _Intl,
ios_base& _Iosbase,
CharType _Fill,
long double val) const;
參數
下一步
迭代器,定址對象是所插入字串的第一個元素。
_國際
布爾值,表示序列中預期的貨幣符號類型: true
如果是國際, false
則為國內。
_Iosbase
格式旗標,已設定時,表示貨幣符號為選用;否則,必須指定貨幣符號。
_填補
間距所使用的字元。
val
要轉換的字串物件。
傳回值
輸出迭代器,定址對象是所產生之最後一個元素的後面一個位置。
備註
第一個虛擬受保護的成員函式會產生序列元素,從 string_type 物件 val 產生貨幣輸出字段。 由 val 控制的序列必須以一或多個十進位數開頭,選擇性地前面加上減號 (-),代表數量。 此函式會傳回迭代器,此迭代器指定所產生之貨幣輸出欄位後的第一個元素。
第二個虛擬受保護成員函式的行為與第一個函式相同,不同之處在於它會有效地將 val 轉換成十進位數序列,並選擇性地在減號前面,然後將該序列轉換成上述。
貨幣輸出欄位的格式是由 (effective) 呼叫傳回的地區設定 Facet fac 所決定,use_facet<moneypunct<CharType, intl>>( iosbase. getloc)。
具體而言:
fac. pos_format 會決定為非負數值產生欄位元件時的順序。
fac. neg_format 會決定為負數值產生欄位元件時的順序。
fac. curr_symbol 會決定要為貨幣符號產生的元素序列。
fac. positive_sign 會決定要為正號產生的元素序列。
fac. negative_sign 會決定要為負號產生的元素序列。
fac. grouping 會決定任何小數點左邊數字分組的方式。
fac. thousands_sep 會決定任何小數點左邊分隔數字群組的元素。
fac. decimal_point 會決定將整數與任何小數分隔的元素。
fac. frac_digits 會決定任何小數點右邊的有效小數數目。
如果符號字串 (fac. negative_sign
或 fac. positive_sign
) 有多個元素,則只會產生第一個專案,其中元素等於 money_base::sign 會出現在格式模式中 (fac. neg_format
或 fac. )。 pos_format
所有其餘元素則是在貨幣輸入欄位的結尾產生。
如果 iosbase. flags 和 showbase 為非零,字串 fac。 curr_symbol
就會在格式模式中與 money_base::symbol 相等之元素出現的位置產生。 否則,不會產生任何貨幣符號。
如果 fac. grouping (其第一個元素的值為 CHAR_MAX) 未施加任何千分號條件約束,就不會有任何 fac. thousands_sep
執行個體在貨幣輸出欄位的值部分 (格式模式中與 money_base::value 相等之元素出現的位置) 產生。 如果 fac. frac_digits
為零,則在十進位數字之後不會產生任何 fac. decimal_point
執行個體。 否則,產生的貨幣輸出欄位會將低序位 fac. frac_digits
十進位數字放在小數點右邊。
系統會針對所有數字輸出欄位進行填補,但有例外,就是如果 iosbase. flags & iosbase。 internal 不為零,便會在格式模式中與 money_base::space 相等之元素出現的位置,於該元素未出現的情況下,產生任何內部填補字元。 否則,內部填補字元會出現在已產生的序列之前。 填補字元為 fill。
函式會呼叫 iosbase. width(0) 將欄位寬度重設為零。
範例
請參閱 put 的範例,其中會由 put 呼叫此虛擬成員函式。
money_put::iter_type
描述輸出迭代器的類型。
typedef OutputIterator iter_type;
備註
此類型與範本參數 OutputIterator 同義。
money_put::money_put
money_put
類型物件的建構函式。
explicit money_put(size_t _Refs = 0);
參數
_裁判
整數值,用來指定物件的記憶體管理類型。
備註
_Refs 參數的可能值及其重要性如下:
0:物件的存留期由包含該物件的地區設定來管理。
1:物件的存留期必須以手動方式管理。
> 1:未定義這些值。
無法提供任何直接範例,因為解構函式受到保護。
建構函式會以 locale::facet( _Refs
) 將其基底物件初始化。
money_put::p ut
將數字或字串轉換為代表貨幣值的字元序列。
iter_type put(
iter_type next,
bool _Intl,
ios_base& _Iosbase,
CharType _Fill,
const string_type& val) const;
iter_type put(
iter_type next,
bool _Intl,
ios_base& _Iosbase,
CharType _Fill,
long double val) const;
參數
下一步
迭代器,定址對象是所插入字串的第一個元素。
_國際
布爾值,表示序列中預期的貨幣符號類型: true
如果是國際, false
則為國內。
_Iosbase
格式旗標,已設定時,表示貨幣符號為選用;否則,必須指定貨幣符號。
_填補
間距所使用的字元。
val
要轉換的字串物件。
傳回值
輸出迭代器,定址對象是所產生之最後一個元素的後面一個位置。
備註
兩個成員函式都會傳回 do_put( next
, _Intl
, _Iosbase
, _Fill
, val
)。
範例
// money_put_put.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <sstream>
int main()
{
std::locale loc( "german_germany" );
std::basic_stringstream<char> psz;
psz.imbue(loc);
psz.flags(psz.flags() | std::ios_base::showbase); // force the printing of the currency symbol
std::use_facet<std::money_put<char> >(loc).put(std::basic_ostream<char>::_Iter(psz.rdbuf()), true, psz, ' ', 100012);
if (psz.fail())
std::cout << "money_put() FAILED" << std::endl;
else
std::cout << "money_put() = \"" << psz.rdbuf()->str() << "\"" << std::endl;
}
money_put() = "EUR1.000,12"
money_put::string_type
類型,描述包含 CharType
類型字元的字串。
typedef basic_string<CharType, Traits, Allocator> string_type;
備註
此類型描述類別範本 的特製化basic_string 物件可以從來源序列儲存元素序列。