Namensräume
Varianten
Aktionen

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

Von cppreference.com
< cpp‎ | locale‎ | moneypunct
 
 
 
 
 
Definiert 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) Öffentliche Member-Funktion, ruft die Member-Funktion do_positive_sign der am weitesten abgeleiteten Klasse auf.
2) Öffentliche Member-Funktion, ruft die Member-Funktion do_negative_sign der am weitesten abgeleiteten Klasse auf.
3) Gibt den String zurück, der zur Formatierung von positiven Geldbeträgen verwendet wird.
3) Gibt den String zurück, der zur Formatierung von negativen Geldbeträgen verwendet wird.

Nur das erste Zeichen des zurückgegebenen Strings ist das Zeichen, das in der pos_format()/neg_format()-Position erscheint, die durch den Wert sign angegeben ist. Die restlichen Zeichen erscheinen nach dem Rest des Geldbetrags-Strings.

Insbesondere kann für negative_sign von "-" die Formatierung als "-1,23 €" erscheinen, während sie für negative_sign von "()" als "(1,23 €)" erscheinen würde.

[bearbeiten] Rückgabewert

Der String vom Typ string_type, der die Zeichen für das positive oder negative Vorzeichen enthält.

[bearbeiten] Beispiel

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

Ausgabe

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

[bearbeiten] Siehe auch

liefert das Formatierungsmuster für Währungswerte
(virtual protected member function) [bearbeiten]