Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::get_money(3)	      C++ Standard Libary	     std::get_money(3)

NAME
       std::get_money -	std::get_money

Synopsis
	  Defined in header <iomanip>
	  template< class MoneyT >					(since
       C++11)
	  /*unspecified*/ get_money( MoneyT& mon, bool intl = false );

	  When	used  in  an expression	in >> get_money(mon, intl), parses the
       character input as
	  a monetary value, as specified by the	std::money_get	facet  of  the
       locale currently
	  imbued in in,	and stores the value in	mon.

	  The extraction operation in in >> get_money(mon, intl) behaves as a
	  FormattedInputFunction.

Parameters
	  mon	- variable where monetary value	will be	written. Can be	either
       long double or
		 std::basic_string
	  intl - expects to find required international	 currency  strings  if
       true, expects
		 optional currency symbols otherwise

Return value
	  An object of unspecified type	such that

	    *  if  in  is an object of type std::basic_istream<CharT, Traits>,
       the expression in
	      >> get_money(mon,	intl)
		 * has type std::basic_istream<CharT, Traits>&
		 * has value in
		 * behaves as if it called f(in, mon, intl)

	  where	the function f is defined as:

	template<class CharT, class Traits, class MoneyT>
	void f(std::basic_ios<CharT, Traits>& str, MoneyT& mon,	bool intl)
	{
	    using Iter = std::istreambuf_iterator<CharT, Traits>;
	    using MoneyGet = std::money_get<CharT, Iter>;

	    std::ios_base::iostate err = std::ios_base::goodbit;
	    const MoneyGet& mg = std::use_facet<MoneyGet>(str.getloc());

	    mg.get(Iter(str.rdbuf()), Iter(), intl, str, err, mon);

	    if (err != std::ios_base::goodbit)
		str.setstate(err);
	}

Example
       // Run this code

	#include <iomanip>
	#include <iostream>
	#include <locale>
	#include <sstream>

	int main()
	{
	    std::istringstream in("$1,234.56 2.22 USD  3.33");
	    long double	v1, v2;
	    std::string	v3;

	    in.imbue(std::locale("en_US.UTF-8"));
	    in	  >>	std::get_money(v1)    >>     std::get_money(v2)	    >>
       std::get_money(v3, true);

	    if (in)
		std::cout << std::quoted(in.str()) << "	parsed as: "
			  << v1	<< ", "	<< v2 << ", " << v3 << '\n';
	    else
		std::cout << "Parse failed";
	}

Output:
	"$1,234.56 2.22	USD  3.33" parsed as: 123456, 222, 333

See also
	  money_get parses and constructs a monetary value from	an input char-
       acter sequence
		    (class template)
	  put_money formats and	outputs	a monetary value
	  (C++11)   (function template)

http://cppreference.com		  2024.06.10		     std::get_money(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::get_money&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help