名前空間
変種
操作

std::moneypunct<CharT,International>::positive_sign, do_positive_sign, negative_sign, do_negative_sign

提供: cppreference.com
< cpp‎ | locale‎ | moneypunct
 
 
 
 
ヘッダ <locale> で定義
public:
string_type positive_sign() const;
(1)
public:
string_type negative_sign() const;
(2)
protected:
virtual string_type do_positive_sign() const;
(3)
protected:
virtual string_type do_negative_sign() const;
(4)
1) public メンバ関数。 最も派生したクラスのメンバ関数 do_positive_sign を呼びます。
2) public メンバ関数。 最も派生したクラスのメンバ関数 do_negative_sign を呼びます。
3) 正の金額値を書式化するために使用する文字列を返します。
4) 負の金額値を書式化するために使用する文字列を返します。

返された文字列の最初の文字のみが sign によって示される pos_format() または neg_format() 内の位置に現れる文字です。 残りの文字は金額文字列の残りのに現れます。

特に、 "-" の negative_sign の場合、書式化は "-1.23 €" として現れるのに対して、 "()" の negative_sign の場合は、 "(1.23 €)" として現れます。

[編集] 戻り値

正または負の符号として使用される文字を保持する string_type 型の文字列。

[編集]

#include <iostream>
#include <iomanip>
#include <locale>
 
struct my_punct : std::moneypunct_byname<char, false> {
    my_punct(const char* name) : moneypunct_byname(name) {}
    string_type do_negative_sign() const { return "()"; }
};
 
int main()
{
    std::locale loc("de_DE.utf8");
    std::cout.imbue(loc);
    std::cout << loc.name() << " negative sign is '"
              << std::use_facet<std::moneypunct<char>>(loc).negative_sign()
              << "' for example: " << std::showbase << std::put_money(-1234) << '\n';
 
    std::locale loc2("ms_MY.utf8");
    std::cout.imbue(loc2);
    std::cout << loc2.name() << " negative sign is '"
              << std::use_facet<std::moneypunct<char>>(loc2).negative_sign()
              << "' for example: " << std::put_money(-1234) << '\n';
 
    std::cout.imbue(std::locale(std::cout.getloc(), new my_punct("de_DE.utf8")));
    std::cout << "de_DE.utf8 with negative_sign set to \"()\": "
              << std::put_money(-1234) << '\n';
 
}

出力:

de_DE.utf8 negative sign is '-' for example: -12,34 €
ms_MY.utf8 negative sign is '()' for example: (RM12.34)
de_DE.utf8 with negative_sign set to "()": (12,34 €)

[編集] 関連項目

通貨値のための書式化パターンを提供します
(仮想プロテクテッドメンバ関数) [edit]