Namespaces
Variants

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

From cppreference.net
Определено в заголовочном файле <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) Публичная функция-член, вызывает функцию-член do_positive_sign наиболее производного класса.
2) Публичная функция-член, вызывает функцию-член do_negative_sign наиболее производного класса.
3) Возвращает строку, которая используется для форматирования положительных денежных значений.
3) Возвращает строку, которая используется для форматирования отрицательных денежных значений.

Только первый символ возвращаемой строки является символом, который появляется в pos_format() / neg_format() позиции, указанной значением sign . Остальные символы появляются после остальной части денежной строки.

В частности, для negative_sign со значением "-" форматирование может выглядеть как "-1.23 €" , тогда как для negative_sign со значением "()" результат будет выглядеть как "(1.23 €)" .

Возвращаемое значение

Строка типа string_type содержащая символы, которые будут использоваться в качестве положительного или отрицательного знака.

Пример

#include <iomanip>
#include <iostream>
#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 €)

Смотрите также

предоставляет шаблон форматирования для денежных значений
(виртуальная защищенная функция-член)