You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stdcxx.apache.org by se...@apache.org on 2007/05/12 19:17:43 UTC
svn commit: r537489 - in /incubator/stdcxx/trunk/examples/manual:
money_get.cpp out/money_get.out
Author: sebor
Date: Sat May 12 10:17:42 2007
New Revision: 537489
URL: http://svn.apache.org/viewvc?view=rev&rev=537489
Log:
2007-05-12 Martin Sebor <se...@roguewave.com>
* money_get.cpp: Made example more interesting by using thousands
separators and more decimal places than two in input, and by making
it possible to specify all parameters on the command line.
Simplified the invocation of money_get::get() by taking advantage
of the implicit conversion from ios to istreambuf_iterator.
* money_get.out: Adjusted to match the above changes.
Modified:
incubator/stdcxx/trunk/examples/manual/money_get.cpp
incubator/stdcxx/trunk/examples/manual/out/money_get.out
Modified: incubator/stdcxx/trunk/examples/manual/money_get.cpp
URL: http://svn.apache.org/viewvc/incubator/stdcxx/trunk/examples/manual/money_get.cpp?view=diff&rev=537489&r1=537488&r2=537489
==============================================================================
--- incubator/stdcxx/trunk/examples/manual/money_get.cpp (original)
+++ incubator/stdcxx/trunk/examples/manual/money_get.cpp Sat May 12 10:17:42 2007
@@ -1,21 +1,28 @@
/**************************************************************************
*
- * moneyget.cpp - Example program for the money_get facet.
+ * money_get.cpp - Example program for the money_get facet.
*
* $Id$
*
***************************************************************************
*
- * Copyright (c) 1994-2005 Quovadx, Inc., acting through its Rogue Wave
- * Software division. Licensed under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the
- * License. You may obtain a copy of the License at
- * http://www.apache.org/licenses/LICENSE-2.0. Unless required by
- * applicable law or agreed to in writing, software distributed under
- * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
- * CONDITIONS OF ANY KIND, either express or implied. See the License
- * for the specific language governing permissions and limitations under
- * the License.
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ * implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ *
+ * Copyright 1998-2006 Rogue Wave Software.
*
**************************************************************************/
@@ -27,59 +34,63 @@
#include <examples.h>
-#if defined (__osf__)
+// hardcode the name of the English US locale for known systems
+#if defined (__FreeBSD__) || defined (__osf__)
+// FreeBSD and Tru64 UNIX
const char en_US[] = "en_US.ISO8859-1";
#elif defined (__hpux)
+// HP-UX
const char en_US[] = "en_US.iso88591";
-#elif defined (_WIN32) || defined (_WIN64)
+// Windows
+#elif defined (_WIN32)
const char en_US[] = "English";
#else
+// AIX, IRIX, Linux, Solaris
const char en_US[] = "en_US";
#endif
-int main ()
+int main (int argc, char *argv[])
{
typedef std::istreambuf_iterator<char, std::char_traits<char> > Iter;
- const char buffer[] = "$100.02";
+ // 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 dest;
- long double ldest = 0.0;
+ std::string smon;
+ long double fmon = 0.0;
std::ios_base::iostate state = std::ios_base::goodbit;
- Iter end;
- // Retrieve the money_get facet from the global locale.
- const std::locale loc (en_US);
+ // Retrieve the money_get facet from the named locale.
+ const std::locale loc (locname);
const std::money_get<char, Iter> &mgf =
std::use_facet<std::money_get<char, Iter> >(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);
ins.imbue (loc);
- Iter begin (ins);
- // 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);
ins.imbue (loc);
- Iter begin (ins);
- // 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);
}
Modified: incubator/stdcxx/trunk/examples/manual/out/money_get.out
URL: http://svn.apache.org/viewvc/incubator/stdcxx/trunk/examples/manual/out/money_get.out?view=diff&rev=537489&r1=537488&r2=537489
==============================================================================
--- incubator/stdcxx/trunk/examples/manual/out/money_get.out (original)
+++ incubator/stdcxx/trunk/examples/manual/out/money_get.out Sat May 12 10:17:42 2007
@@ -1 +1 @@
-$100.02 --> 10002 --> 10002
+$1,234.6789 --> "123467" --> 123467