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/cpp/locale/moneypunct/positive_sign

Spec-Zone.ru

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