do_negative_sign

std::moneypunct::positive_sign, do_positive_sign, negative_sign, do_negative_sign

Defined in header <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 member function, calls the member function do_positive_sign of the most derived class.
2) Public member function, calls the member function do_negative_sign of the most derived class.
3) Returns the string that is used for formatting of positive monetary values.
3) Returns the string that is used for formatting of negative monetary values.

Only the first character of the string returned is the character that appears in the pos_format()/neg_format() position indicated by the value sign. The rest of the characters appear after the rest of the monetary string.

In particular, for negative_sign of "-", the formatting may appear as "-1.23 €", while for negative_sign of "()" it would appear as "(1.23 €)".

Return value

The string of type string_type holding the characters to be used as positive or negative sign.

Example

#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';
 
}

Output:

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 €)

See also

[virtual]
provides the formatting pattern for currency values
(virtual protected member function)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/cpp/locale/moneypunct/positive_sign

在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号

意见反馈
返回顶部