Delen via


money_put-klasse

In de klassesjabloon wordt een object beschreven dat kan fungeren als een facet voor het beheren van conversies van monetaire waarden naar reeksen van het type CharType.

Syntaxis

template <class CharType,
    class OutputIterator = ostreambuf_iterator<CharType>>
class money_put : public locale::facet;

Parameterwaarden

CharType
Het type dat in een programma wordt gebruikt om tekens in een landinstelling te coderen.

OutputIterator
Het type iterator waarop de monetaire putfuncties hun uitvoer schrijven.

Opmerkingen

Net als bij een facet van de landinstelling heeft de statische object-id een initiële opgeslagen waarde van nul. Bij de eerste poging om toegang te krijgen tot de opgeslagen waarde wordt een unieke positieve waarde in id opgeslagen .

Constructeurs

Constructeur Beschrijving
money_put De constructor voor objecten van het type money_put.

Typedefs

Typenaam Beschrijving
char_type Een type dat wordt gebruikt om een teken te beschrijven dat wordt gebruikt door een landinstelling.
iter_type Een type dat een uitvoer-iterator beschrijft.
string_type Een type dat een tekenreeks beschrijft die tekens van het type bevat CharType.

Functies voor leden

Lid, functie Beschrijving
do_put Een virtuele functie die wordt aangeroepen om een getal of een tekenreeks te converteren naar een tekenreeks die een monetaire waarde vertegenwoordigt.
zet Converteert een getal of een tekenreeks naar een tekenreeks die een monetaire waarde vertegenwoordigt.

Behoeften

Rubriek:<oord>

naamruimte: std

money_put::char_type

Een type dat wordt gebruikt om een teken te beschrijven dat wordt gebruikt door een landinstelling.

typedef CharType char_type;

Opmerkingen

Het type is een synoniem voor de sjabloonparameter CharType.

money_put::d o_put

Een virtuele functie die wordt aangeroepen om een getal of een tekenreeks te converteren naar een tekenreeks die een monetaire waarde vertegenwoordigt.

virtual iter_type do_put(
    iter_type next,
    bool _Intl,
    ios_base& _Iosbase,
    CharType _Fill,
    const string_type& val) const;

virtual iter_type do_put(
    iter_type next,
    bool _Intl,
    ios_base& _Iosbase,
    CharType _Fill,
    long double val) const;

Parameterwaarden

volgende
Een iterator die het eerste element van de ingevoegde tekenreeks aanpakt.

_Intl
Een Booleaanse waarde die het type valutasymbool aangeeft dat in de reeks wordt verwacht: true indien internationaal, false indien binnenlands.

_Iosbase
Een notatievlag die wanneer ingesteld aangeeft dat het valutasymbool optioneel is; anders is dit vereist

_Vullen
Een teken dat wordt gebruikt voor afstand.

val-
Een tekenreeksobject dat moet worden geconverteerd.

Retourwaarde

Een uitvoer-iterator heeft betrekking op de positie die voorbij het laatste geproduceerde element valt.

Opmerkingen

Met de eerste virtuele beveiligde lidfunctie worden sequentiële elementen gegenereerd die beginnen bij het produceren van een monetaire uitvoerveld van de string_type object val. De reeks die wordt bepaald door val , moet beginnen met een of meer decimale cijfers, eventueel voorafgegaan door een minteken (-), dat het bedrag aangeeft. De functie retourneert een iterator die het eerste element buiten het gegenereerde monetaire uitvoerveld aangeeft.

De tweede virtuele beveiligde lidfunctie gedraagt zich hetzelfde als de eerste, behalve dat het effectief eerst val converteert naar een reeks decimale cijfers, optioneel voorafgegaan door een minteken, en vervolgens converteert die reeks zoals hierboven.

De notatie van een monetaire uitvoerveld wordt bepaald door de landinstelling facetfac die wordt geretourneerd door de (effectieve) aanroep use_facet<moneypunct<CharType, intl>>( iosbase. getloc).

Specifiek:

  • fac. pos_format bepaalt de volgorde waarin onderdelen van het veld worden gegenereerd voor een niet-negatieve waarde.

  • fac. neg_format bepaalt de volgorde waarin onderdelen van het veld worden gegenereerd voor een negatieve waarde.

  • fac. curr_symbol bepaalt de reeks elementen die moeten worden gegenereerd voor een valutasymbool.

  • fac. positive_sign bepaalt de volgorde van elementen die moeten worden gegenereerd voor een positief teken.

  • fac. negative_sign bepaalt de volgorde van elementen die moeten worden gegenereerd voor een negatief teken.

  • fac. groeperen bepaalt hoe cijfers links van een decimaalteken worden gegroepeerd.

  • fac. thousands_sep bepaalt het element dat groepen cijfers links van een decimaalteken scheidt.

  • fac. decimal_point bepaalt het element dat de gehele getallen van eventuele breukcijferen scheidt.

  • fac. frac_digits bepaalt het aantal significante breukcijferen rechts van een decimaalteken.

Als de tekenreeks ( fac. negative_sign of fac. positive_sign) meer dan één element heeft, wordt alleen het eerste element gegenereerd waarbij het element gelijk is aan money_base::sign wordt weergegeven in het notatiepatroon ( fac. neg_format of fac. pos_format). Alle resterende elementen worden gegenereerd aan het einde van het monetaire uitvoerveld.

Als iosbase. flags & showbase is nonzero, de tekenreeksfac. curr_symbol wordt gegenereerd waarbij het element gelijk is aan money_base::symbool wordt weergegeven in het notatiepatroon. Anders wordt er geen valutasymbool gegenereerd.

Als er geen groeperingsbeperkingen worden opgelegd door fac. groeperen (het eerste element heeft de waarde CHAR_MAX), dan geen exemplaren van fac. thousands_sep worden gegenereerd in het waardegedeelte van het monetaire uitvoerveld (waarbij het element gelijk is aan money_base::value wordt weergegeven in het notatiepatroon). Als fac. frac_digits is nul, dan geen instantie van fac. decimal_point wordt gegenereerd na de decimale cijfers. Anders wordt in het resulterende veld voor de monetaire uitvoer de fac met lage volgorde geplaatst. frac_digits decimalen rechts van het decimaalteken.

Opvulling gebeurt net als voor elk numeriek uitvoerveld, behalve dat als iosbase. vlaggen en iosbase. intern is nietzero, eventuele interne opvulling wordt gegenereerd waarbij het element gelijk is aan money_base::spatie wordt weergegeven in het indelingspatroon, als deze wel wordt weergegeven. Anders vindt interne opvulling plaats vóór de gegenereerde reeks. Het opvullingsteken is opvulling.

De functie roept iosbase aan. breedte(0) om de veldbreedte opnieuw in te stellen op nul.

Voorbeeld

Zie het voorbeeld voor put, waarbij de functie virtueel lid wordt aangeroepen door put.

money_put::iter_type

Een type dat een uitvoer-iterator beschrijft.

typedef OutputIterator iter_type;

Opmerkingen

Het type is een synoniem voor de sjabloonparameter OutputIterator.

money_put::money_put

De constructor voor objecten van het type money_put.

explicit money_put(size_t _Refs = 0);

Parameterwaarden

_Refs
Een geheel getal dat wordt gebruikt om het type geheugenbeheer voor het object op te geven.

Opmerkingen

De mogelijke waarden voor de parameter _Refs en hun significantie zijn:

  • 0: de levensduur van het object wordt beheerd door de landinstellingen die het object bevatten.

  • 1: de levensduur van het object moet handmatig worden beheerd.

  • > 1: deze waarden zijn niet gedefinieerd.

Er zijn geen directe voorbeelden mogelijk, omdat de destructor is beveiligd.

De constructor initialiseert het basisobject met landinstelling::facet(_Refs).

money_put::p ut

Converteert een getal of een tekenreeks naar een tekenreeks die een monetaire waarde vertegenwoordigt.

iter_type put(
    iter_type next,
    bool _Intl,
    ios_base& _Iosbase,
    CharType _Fill,
    const string_type& val) const;

iter_type put(
    iter_type next,
    bool _Intl,
    ios_base& _Iosbase,
    CharType _Fill,
    long double val) const;

Parameterwaarden

volgende
Een iterator die het eerste element van de ingevoegde tekenreeks aanpakt.

_Intl
Een Booleaanse waarde die het type valutasymbool aangeeft dat in de reeks wordt verwacht: true indien internationaal, false indien binnenlands.

_Iosbase
Een notatievlag die wanneer ingesteld aangeeft dat het valutasymbool optioneel is; anders is dit vereist

_Vullen
Een teken dat wordt gebruikt voor afstand.

val-
Een tekenreeksobject dat moet worden geconverteerd.

Retourwaarde

Een uitvoer-iterator heeft betrekking op de positie die voorbij het laatste geproduceerde element valt.

Opmerkingen

Beide lidfuncties retourneren do_put(next, _Intl, _Iosbase, , _Fill). val

Voorbeeld

// money_put_put.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <sstream>

int main()
{
    std::locale loc( "german_germany" );
    std::basic_stringstream<char> psz;

    psz.imbue(loc);
    psz.flags(psz.flags() | std::ios_base::showbase); // force the printing of the currency symbol
    std::use_facet<std::money_put<char> >(loc).put(std::basic_ostream<char>::_Iter(psz.rdbuf()), true, psz, ' ', 100012);
    if (psz.fail())
        std::cout << "money_put() FAILED" << std::endl;
    else
        std::cout << "money_put() = \"" << psz.rdbuf()->str() << "\"" << std::endl;
}
money_put() = "EUR1.000,12"

money_put::string_type

Een type dat een tekenreeks beschrijft die tekens van het type bevat CharType.

typedef basic_string<CharType, Traits, Allocator> string_type;

Opmerkingen

Het type beschrijft een specialisatie van klassesjabloon basic_string waarvan objecten reeksen elementen uit de bronvolgorde kunnen opslaan.

Zie ook

<oord>
facetklasse
Thread Safety in de standaardbibliotheek van C++