Spec-Zone.ru › C++

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

Определено в заголовке <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 €)

См. также

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

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API