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: [EMAIL PROTECTED] > Sent: Sat, 12 May 2007 17:32:56 -0000 > To: [EMAIL PROTECTED] > 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 <[EMAIL PROTECTED]> > > 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 <iostream> // for cout, endl > #include <iterator> // for istreambuf_iterator > > -#include <examples.h> > +int main (int argc, char *argv[]) > +{ > + // Get the monetary string and locale from the argument vector. > + const char* const buffer = 1 < argc ? argv [1] : "$1,234.6789"; > + const char* const locname = 2 < argc ? argv [2] : "en_US"; > + const bool intl = 3 < argc; > > + std::string smon; > + long double fmon = 0.0; > > -int main () > -{ > - typedef std::istreambuf_iterator<char, > - std::char_traits<char> > 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<char, Iter> &mgf = > - std::use_facet<std::money_get<char, Iter> > >(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<char> Iter; > + typedef std::money_get<char, Iter> MoneyGet; > + > + const MoneyGet &mgf = std::use_facet<MoneyGet>(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 << buffer << " --> " > - << dest << " --> " << ldest << > std::endl; > + // Output the original sequence and its string and floating point > + // representations. > + std::cout << buffer << " --> \"" << smon > << "\" --> " << fmon << '\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 --> 10002 --> 10002 > +$1,234.6789 --> "123467" --> 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!