VMS Help
CXXLSTD, locales, num_put

 *Conan The Librarian

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

 NAME

   num_put - Numeric formatting	facet for output.

 SYNOPSIS

   #include <locale>
   template <class charT, class OutputIterator> class num_put;

 DESCRIPTION

   The num_put<charT,OutputIterator> template provides facilities for
   formatted output of	numbers.  basic_ostream	and all	other input
   oriented streams use this facet to implement formatted
   numeric	output.

 INTERFACE

   template <class charT, class OutputIterator =
             ostreambuf_iterator<charT> >
   class	num_put	: public locale::facet {
   public:
    typedef charT	    char_type;
    typedef OutputIterator   iter_type;
    explicit num_put(size_t = 0);

    iter_type put(iter_type, ios_base&, char_type, bool)	const;
    iter_type put(iter_type, ios_base&, char_type, long)	const;
    iter_type put(iter_type, ios_base&, char_type,
 		 unsigned long)	const;
    iter_type put(iter_type, ios_base&, char_type,
 		 double) const;
    iter_type put(iter_type, ios_base&, char_type,
 		 long double) const;
    static locale::id id;

   protected:
     ~num_put();	 // virtual
    virtual iter_type do_put(iter_type, ios_base&, char_type,
 			    bool) const;
    virtual iter_type do_put(iter_type, ios_base&, char_type,
 			    long) const;
    virtual iter_type do_put(iter_type, ios_base&, char_type,
 			    unsigned long) const;
    virtual iter_type do_put(iter_type, ios_base&, char_type,
 			    double) const;
    virtual iter_type do_put(iter_type, ios_base&, char_type,
 			    long double) const;
   };

 TYPES

   char_type
      Type of character upon which the facet is instantiated.

   iter_type
      Type of iterator used to scan the character buffer.

 CONSTRUCTORS AND DESTRUCTORS

   explicit num_put(size_t refs = 0)
      Construct a num_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.

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

 FACET ID

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

 PUBLIC MEMBER FUNCTIONS

   The public members of	the num_put facet provide an interface to
   protected members.  Each public	member xxx has a corresponding
   virtual protected member do_xxx.  All work is delagated	to
   these protected members.   For instance, the	long version of	the
   public put function	simply calls its protected cousin
   do_put.

   iter_type
   put(iter_type	s, ios_base& io, char_type fill, bool v) const;
   iter_type
   put(iter_type	s, ios_base& io, char_type fill, long v) const;
   iter_type
   put(iter_type	s, ios_base& io, char_type fill,
      unsigned long v) const;
   iter_type
   put(iter_type	s, ios_base& io, char_type fill, double	v) const;
   iter_type
   put(iter_type	s, ios_base& io, char_type fill, long double v)	const;

      Each of the five overloads	of the put function simply call	the
      corresponding do_put function.

 PROTECTED MEMBER FUNCTIONS

   virtual iter_type
   do_put(iter_type s, ios_base&	io,
 	char_type fill,	bool v)	const;
   virtual iter_type
   do_put(iter_type s, ios_base&	io,
 	char_type fill,	long v)	const;
   virtual iter_type
   do_put(iter_type s, ios_base&	io,
 	char_type fill,unsigned	long) const;
   virtual iter_type
   do_put(iter_type s, ios_base&	io,
 	char_type fill,	double v) const;
   virtual iter_type
   do_put(iter_type s, ios_base&	io,
 	char_type fill,long double v) const;

      The five overloads	of the do_put member function all take a
      numeric value and output a	formatted character string
      representing	that value. The character string is output
      through the	s argument to the function. The io argument is
      used to	obtain formatting specifications, and the fill
      argument determines the character to use in padding.

 EXAMPLE

   //
   // numput.cpp
   //

   #include <iostream>

   int main ()
   {
    using namespace std;

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

    locale loc;
    bool	bval = true;
    long	lval = 422432L;
    unsigned long ulval = 12328889UL;
    double dval = 10933.8934;
    long	double ldval = 100028933.8934;

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

     // Get a num_put facet reference
    const num_put<char,iter_type>& np =
   #ifndef _RWSTD_NO_TEMPLATE_ON_RETURN_TYPE
    use_facet<num_put<char,iter_type> >(loc);
   #else
    use_facet(loc,(num_put<char,iter_type>*)0);
   #endif

     // Put out a bool
    cout	<< bval	<< " --> ";
    np.put(begin,cout,' ',bval);

     // Put out a long
    cout	<< endl	<< lval	<< " --> ";
    np.put(begin,cout,' ',lval);

     // Put out an unsigned long
    cout	<< endl	<< ulval << " --> ";
    np.put(begin,cout,' ',ulval);

     // Put out a double
    cout	<< endl	<< dval	<< " --> ";
    np.put(begin,cout,' ',dval);

     // Put out a long double
    cout	<< endl	<< ldval << " --> ";
    np.put(begin,cout,' ',ldval);

    cout	<<  endl;

    return 0;
   }

 SEE ALSO

   locale, facets, numget, numpunct, ctype

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