Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::money_get

      From cppreference.com
      <cpp‎ |locale
       
       
       
      Localization library
       
       
      Defined in header<locale>
      template<

         class CharT,
         class InputIt=std::istreambuf_iterator<CharT>

      >class money_get;

      Class templatestd::money_get encapsulates the rules for parsing monetary values from character streams. The standard I/O manipulatorstd::get_money uses thestd::money_get facet of the I/O stream's locale.

      std-money get-inheritance.svg

      If astd::money_get specialization is not guaranteed to be provided by the standard library (see below), the behaviors of itsget() anddo_get() are not guaranteed as specified.

      Contents

      [edit]Specializations

      The standard library is guaranteed to provide the following specializations (they arerequired to be implemented by any locale object):

      Defined in header<locale>
      std::money_get<char> parses narrow string representations of monetary values
      std::money_get<wchar_t> parses wide string representations of monetary values

      In addition, the standard library is also guaranteed to provide every specialization that satisfies the following type requirements:

      [edit]Nested types

      Type Definition
      char_typeCharT
      string_typestd::basic_string<CharT>
      iter_typeInputIt

      [edit]Data members

      Member Description
      std::locale::idid[static] the identifier of thefacet

      [edit]Member functions

      constructs a newmoney_get facet
      (public member function)
      invokesdo_get
      (public member function)

      [edit]Protected member functions

      destructs amoney_get facet
      (protected member function)
      [virtual]
      parses a monetary value from an input stream
      (virtual protected member function)[edit]

      [edit]Example

      Run this code
      #include <iomanip>#include <iostream>#include <iterator>#include <locale>#include <sstream> int main(){std::string str="$1.11 $2.22 $3.33";std::cout<<std::fixed<<std::setprecision(2); std::cout<<'\"'<< str<<"\" parsed with the I/O manipulator: ";std::istringstream s1(str);    s1.imbue(std::locale("en_US.UTF-8")); longdouble val;while(s1>>std::get_money(val))std::cout<< val/100<<' ';std::cout<<'\n';     str="USD  1,234.56";std::cout<<'\"'<< str<<"\" parsed with the facet directly: ";std::istringstream s2(str);    s2.imbue(std::locale("en_US.UTF-8")); auto& f=std::use_facet<std::money_get<char>>(s2.getloc());std::ios_base::iostate err;std::istreambuf_iterator<char> beg(s2), end;    f.get(beg, end,true, s2, err, val); std::cout<< val/100<<'\n';}

      Output:

      "$1.11 $2.22 $3.33" parsed with the I/O manipulator: 1.11 2.22 3.33"USD  1,234.56" parsed with the facet directly: 1234.56

      [edit]Defect reports

      The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

      DRApplied toBehavior as publishedCorrect behavior
      LWG 427C++98money_get was guaranteed to accept anyCharT that
      meets the requirements for a character on which
      any of the iostream components can be instantiated
      only guarantees to acceptchar,
      wchar_t and other implementation-
      defined character types
      LWG 2392C++98only character typeCharT could be
      guaranteed to be accepted bymoney_get
      can guarantee to accept implementation-
      defined character container types

      [edit]See also

      defines monetary formatting parameters used bystd::money_get andstd::money_put
      (class template)[edit]
      formats a monetary value for output as a character sequence
      (class template)[edit]
      (C++11)
      parses a monetary value
      (function template)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/locale/money_get&oldid=178032"

      [8]ページ先頭

      ©2009-2025 Movatter.jp