Namespaces
Variants

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

From cppreference.net
Definido en el encabezado <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) Función miembro pública, llama a la función miembro do_positive_sign de la clase más derivada.
2) Función miembro pública, llama a la función miembro do_negative_sign de la clase más derivada.
3) Devuelve la cadena que se utiliza para el formato de valores monetarios positivos.
3) Devuelve la cadena que se utiliza para el formato de valores monetarios negativos.

Solo el primer carácter de la cadena devuelta es el carácter que aparece en la pos_format() / neg_format() posición indicada por el valor sign . El resto de los caracteres aparecen después del resto de la cadena monetaria.

En particular, para negative_sign de "-" , el formato puede aparecer como "-1.23 €" , mientras que para negative_sign de "()" aparecería como "(1.23 €)" .

Valor de retorno

La cadena de tipo string_type que contiene los caracteres que se utilizarán como signo positivo o negativo.

Ejemplo

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

Salida:

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

Véase también

proporciona el patrón de formato para valores monetarios
(función miembro protegida virtual)