Man Page money_put.3



                       Standard C++ Library
             Copyright 1998, Rogue Wave Software, Inc.



NAME

     money_put

      - Monetary formatting facet for output.





SYNOPSIS

     #include <locale>
     template <class charT,
             class OutputIterator = ostreambuf_iterator<charT> >
     class money_put;





DESCRIPTION

     The money_put_facet takes a long double  value,  or  generic
     sequence of digits and writes out a formatted representation
     of the monetary value.





INTERFACE

     template <class charT,
             class OutputIterator = ostreambuf_iterator<charT> >
     class money_put : public locale::facet {
     public:
      typedef charT               char_type;
      typedef OutputIterator      iter_type;
      typedef basic_string<charT> string_type;
      explicit money_put(size_t = 0);
      iter_type put(iter_type, bool, ios_base&, char_type,
                    long double) const;
      iter_type put(iter_type, bool, ios_base&, char_type,
                    const string_type&) const;
      static locale::id id;
     protected:
       ~money_put();  // virtual
      virtual iter_type  do_put(iter_type, bool, ios_base&,
                                char_type, long double) const;
      virtual iter_type do_put(iter_type, bool, ios_base&,
                               char_type, const string_type&)
                               const;
     };


TYPES

     char_type


        Type of the character upon which  the  facet  is  instan-
        tiated.



     iter_type


        Type of iterator used to scan the character buffer.



     string_type


        Type of character string passed to member functions.






CONSTRUCTORS

     explicit money_put(size_t refs = 0)


        Construct a money_put facet. If the refs argument  is  0,
        then  destruction  of  the  object  is  delegated  to the
        locale, or locales, containing it. This allows  the  user
        to  ignore lifetime management issues. On the other hand,
        if refs is 1, then the object must be explicitly deleted;
        the locale does not do so.






DESTRUCTORS

     ~money_put();  // virtual and protected


        Destroys the facet.






STATIC MEMBERS

     static locale::id id;
        Unique identifier for this type of facet.






PUBLIC MEMBER FUNCTIONS

     The public members of the money_put facet include an  inter-
     face  to  protected  members.  Each  public member put has a
     corresponding virtual protected member do_put.


     iter_type
     put(iter_type s, bool intl, ios_base& f, char_type fill,
        long double units) const;
     iter_type
     put(iter_type s, bool intl, ios_base& f, char_type fill,
        const string_type& digits) const;


        Each of these two overloads of the public member function
        put simply calls the corresponding protected do_put func-
        tion.






PROTECTED MEMBER FUNCTIONS

     virtual iter_type
     do_put(iter_type s, bool intl, ios_base& f, char_type fill,
           long double units) const;


        Writes out a character string representation of the mone-
        tary value contained in units. Since units represents the
        monetary value in the smallest possible unit of currency,
        any   fractional  portions  of  the  value  are  ignored.
        f.flags() and  the  moneypunct<charT,  intl>  facet  from
        f.getloc() give the formatting information.

        The fill argument is used for any padding.

        Returns an iterator pointing one past the last  character
        written.



     virtual iter_type
     do_put(iter_type s, bool intl, ios_base& f, char_type fill,
           const string_type& digits) const;

        Writes out a character string representation of the mone-
        tary  value  contained  in  digits. digits represents the
        monetary value as a sequence of digits  in  the  smallest
        possible  unit  of  currency.  do_put  only  looks  at an
        optional  -  character  and  any  immediately  contiguous
        digits.  f.flags()  and the moneypunct<charT, intl> facet
        from f.getloc() give the formatting information.

        The fill argument is used for any padding.

        Returns an iterator pointing one past the last  character
        written.






EXAMPLE

     //
     // moneyput.cpp
     //

     #include <string>
     #include <iostream>

     int main ()
     {
      using namespace std;

      typedef ostreambuf_iterator<char,char_traits<char> >
              iter_type;

      locale loc;
      string buffer("10002");
      long double ldval = 10002;

       // Construct a ostreambuf_iterator on cout
      iter_type begin(cout);

       // Get a money put facet
      const money_put<char,iter_type>& mp =
     #ifndef _RWSTD_NO_TEMPLATE_ON_RETURN_TYPE
      use_facet<money_put<char,iter_type> >(loc);
     #else
      use_facet(loc,(money_put<char,iter_type>*)0);
     #endif

       // Put out the string representation of the monetary value
      cout << buffer << " --> ";
      mp.put(begin,false,cout,' ',buffer);

       // Put out the long double representation
       // of the monetary value
      cout << endl << ldval << " --> ";
      mp.put(begin,false,cout,' ',ldval);

      cout <<  endl;

      return 0;
     }





SEE ALSO

     locale, facets, money_get, moneypunct