incubator-stdcxx-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mark Brown <mbr...@inbox.com>
Subject RE: svn commit: r537492 - /incubator/stdcxx/trunk/doc/stdlibref/money-get.html
Date Sat, 12 May 2007 19:06:14 GMT
Martin,

Thanks for fixing it! I have a question about the new code: Could you show an example of an
international monetary string that would be correctly parsed by the facet? I tried a few but
none of them could be parsed. For instance, "USD 1234" gives this output:
USD 1234 --> "" --> 0
The same happens with g++ and STLport so I suspect I must be doing something wrong. Removing
the space between the currency symbol and the number didn't make a difference.

-- Mark


> -----Original Message-----
> From: sebor@apache.org
> Sent: Sat, 12 May 2007 17:32:56 -0000
> To: stdcxx-commits@incubator.apache.org
> Subject: svn commit: r537492 -
> /incubator/stdcxx/trunk/doc/stdlibref/money-get.html
> 
> Author: sebor
> Date: Sat May 12 10:32:55 2007
> New Revision: 537492
> 
> URL: http://svn.apache.org/viewvc?view=rev&rev=537492
> Log:
> 2007-05-12  Martin Sebor  <sebor@roguewave.com>
> 
> 	STDCXX-411
> 	* money-get.html: Updated example program to (closely) match
> 	the latest version of the program in svn and to match shown
> 	output.
> 
> Modified:
>     incubator/stdcxx/trunk/doc/stdlibref/money-get.html
> 
> Modified: incubator/stdcxx/trunk/doc/stdlibref/money-get.html
> URL:
> http://svn.apache.org/viewvc/incubator/stdcxx/trunk/doc/stdlibref/money-get.html?view=diff&rev=537492&r1=537491&r2=537492
> ==============================================================================
> --- incubator/stdcxx/trunk/doc/stdlibref/money-get.html (original)
> +++ incubator/stdcxx/trunk/doc/stdlibref/money-get.html Sat May 12
> 10:32:55 2007
> @@ -165,54 +165,53 @@
>  #include &lt;iostream&gt;   // for cout, endl
>  #include &lt;iterator&gt;   // for istreambuf_iterator
> 
> -#include &lt;examples.h&gt;
> +int main (int argc, char *argv[])
> +{
> +    // Get the monetary string and locale from the argument vector.
> +    const char* const buffer  = 1 &lt; argc ? argv [1] : "$1,234.6789";
> +    const char* const locname = 2 &lt; argc ? argv [2] : "en_US";
> +    const bool        intl    = 3 &lt; argc;
> 
> +    std::string smon;
> +    long double fmon = 0.0;
> 
> -int main ()
> -{
> -    typedef std::istreambuf_iterator&lt;char,
> -            std::char_traits&lt;char&gt; &gt; Iter;
> -
> -    const std::string buffer ("$100.02");
> -    std::string dest;
> -    long double ldest;
> -    std::ios_base::iostate state;
> -    Iter end;
> -
> -    // Retrieve the money_get facet from the global locale.
> -    const std::money_get&lt;char, Iter&gt; &amp;mgf =
> -        std::use_facet&lt;std::money_get&lt;char, Iter&gt;
> &gt;(std::locale
> -             ());
> +    std::ios_base::iostate state = std::ios_base::goodbit;
> +
> +    // Retrieve the money_get facet from the named locale.
> +    const std::locale loc (locname);
> +
> +    typedef std::istreambuf_iterator&lt;char&gt; Iter;
> +    typedef std::money_get&lt;char, Iter&gt;     MoneyGet;
> +
> +    const MoneyGet &mgf = std::use_facet&lt;MoneyGet&gt;(loc);
> 
>      {
> -        // Build an istringstream from the buffer and construct
> -        // a beginning iterator on it.
> +        // Build an istringstream object from the buffer
> +        // and imbue the locale in it.
>          std::istringstream ins (buffer);
> -        Iter begin (ins);
> +        ins.imbue (loc);
> 
> -        // Get a string representation of the monetary value
> -        mgf.get (begin, end, false, ins, state, dest);
> +        // Get a string representation of the monetary value.
> +        mgf.get (ins, Iter (), intl, ins, state, smon);
>      }
>      {
> -        // Build another istringstream from the buffer, etc.
> -        // so we have an iterator pointing to the beginning
>          std::istringstream ins (buffer);
> -        Iter begin (ins);
> +        ins.imbue (loc);
> 
> -        // Get a a long double representation of the monetary
> -           value
> -        mgf.get (begin, end, false, ins, state, ldest);
> +        // Get a floating point representation of the monetary value.
> +        mgf.get (ins, Iter (), intl, ins, state, fmon);
>      }
> 
> -    std::cout &lt;&lt; buffer &lt;&lt; " --&gt; "
> -              &lt;&lt; dest &lt;&lt; " --&gt; " &lt;&lt;
ldest &lt;&lt;
> std::endl;
> +    // Output the original sequence and its string and floating point
> +    // representations.
> +    std::cout &lt;&lt; buffer &lt;&lt; " --&gt; \"" &lt;&lt;
smon
> &lt;&lt; "\" --&gt; " &lt;&lt; fmon &lt;&lt; '\n';
> 
> -    // return 0 on success, non-zero on failure
> +    // Return 0 on success, non-zero on failure.
>      return !(std::ios_base::eofbit == state);
>  }
> 
>  Program Output:
> -$100.02 --&gt; 10002 --&gt; 10002
> +$1,234.6789 --&gt; "123467" --&gt; 123467
>  </PRE></UL>
>  <A NAME="sec13"><H3>See Also</H3></A>
>  <P><B><I><A HREF="locale.html">locale</A></I></B>,
<A
> HREF="facets.html">Facets</A>, <B><I><A
> HREF="money-put.html">money_put</A></I></B>, <B><I><A
> HREF="moneypunct.html">moneypunct</A></I></B></P>

____________________________________________________________
ONE-CLICK WEBMAIL ACCESS - Easily monitor & access your email accounts!
Visit http://www.inbox.com/notifier and check it out!

Mime
View raw message