Library /sys$common/syshlp/helplib.hlb
CXXLSTD, locales, money_put

 *Conan The Librarian

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

 NAME

   money_put - Monetary formatting facet	for output.

 SYNOPSIS

   #include <locale>
   template <class charT, bool Intl = false,
 	   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, bool Intl = false,
 	   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, ios_base&, char_type,
 		 long double) const;
    iter_type put(iter_type, ios_base&, char_type,
 		 const string_type&) const;
    static const	bool intl = Intl;
    static locale::id id;
   protected:
     ~money_put();  // virtual
    virtual iter_type  do_put(iter_type,	ios_base&, char_type,
 			     long double) const;
    virtual iter_type do_put(iter_type, ios_base&, char_type,
 			    const string_type&)	const;
   };

 TYPES

   char_type
      Type of the character upon	which the facet	is instantiated.

   iter_type
      Type of iterator used to scan the character buffer.

   string_type
      Type of character string passed to	member functions.

 CONSTRUCTORS AND DESTRUCTORS

   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 had, if refs  is
      1	then the object	must be	explicitly deleted; the locale will
      not do	so.  In	this case, the object can be maintained across
      the	lifetime of multiple locales.

   ~money_put();	 // virtual and	protected
      Destroy the facet

 STATIC MEMBERS

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

   static const bool intl = Intl;
      true if international representation, false otherwise.

 PUBLIC MEMBER FUNCTIONS

   The public members of	the money_put facet provide an interface to
   protected members.  Each public	member put has a corresponding
   virtual protected member do_put.

   iter_type
   put(iter_type	s, ios_base& f,	char_type fill,
      long double units)	const;
   iter_type
   put(iter_type	s, 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 function.

 PROTECTED MEMBER FUNCTIONS

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

      Writes out	a character string representation of the monetary
      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> facet from f.getloc() provide
      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, ios_base&	f, char_type fill,
 	const string_type& digits) const;
      Writes out	a character string representation of the monetary
      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 immediatly contigous digits.	f.flags() and the
      moneypunct<charT> facet from f.getloc() provide 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,false,iter_type>& mp =
   #ifndef _RWSTD_NO_TEMPLATE_ON_RETURN_TYPE
    use_facet<money_put<char,false,iter_type> >(loc);
   #else
    use_facet(loc,(money_put<char,false,iter_type>*)0);
   #endif

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

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

    cout	<<  endl;

    return 0;
   }

 SEE ALSO

   locale, facets, money_get, moneypunct

 STANDARDS CONFORMANCE
   ANSI X3J16/ISO WG21 Joint C++	Committee
  Close     Help