Класс money_getmoney_get Class

Шаблон класса описывает объект, который может служить в качестве аспекта языкового стандарта для управления преобразованием последовательностей типа CharType в денежные значения.The class template describes an object that can serve as a locale facet to control conversions of sequences of type CharType to monetary values.

СинтаксисSyntax

template <class CharType, class InputIterator = istreambuf_iterator<CharType>>
class money_get : public locale::facet;

ПараметрыParameters

CharTypeCharType
Тип, используемый внутри программы для кодирования символов в языковом стандарте.The type used within a program to encode characters in a locale.

InputIteratorInputIterator
Тип итератора, из которого функции получения считывают своих входные данные.The type of iterator from which the get functions read their input.

КомментарииRemarks

Как и в случае любого другого аспекта языкового стандарта, начальное сохраненное значение статического идентификатора объекта равно нулю.As with any locale facet, the static object ID has an initial stored value of zero. Первая попытка получить доступ к сохраненному значению сохранит уникальное положительное значение в id.The first attempt to access its stored value stores a unique positive value in id.

КонструкторыConstructors

КонструкторConstructor ОписаниеDescription
money_getmoney_get Конструктор для объектов типа money_get, используемых для извлечения числовых значений из последовательностей, представляющих денежные значения.The constructor for objects of type money_get that are used to extract numerical values from sequences representing monetary values.

Определения типовTypedefs

Имя типаType name ОписаниеDescription
char_typechar_type Тип, используемый для описания символа, используемого языковым стандартом.A type that is used to describe a character used by a locale.
iter_typeiter_type Тип, который описывает итератор ввода.A type that describes an input iterator.
string_typestring_type Тип, описывающий строку, содержащую символы типа CharType.A type that describes a string containing characters of type CharType.

Функции элементовMember functions

Функция-членMember function ОписаниеDescription
do_getdo_get Виртуальная функция, вызываемая для извлечения числового значения из последовательности символов, представляющей денежное значение.A virtual function called to extracts a numerical value from a character sequence that represents a monetary value.
getget Извлекает числовое значение из последовательности символов, представляющей денежное значение.Extracts a numerical value from a character sequence that represents a monetary value.

ТребованияRequirements

Заголовок:<locale>Header: <locale>

Пространство имен: stdNamespace: std

money_get:: char_typemoney_get::char_type

Тип, используемый для описания символа, используемого языковым стандартом.A type that is used to describe a character used by a locale.

typedef CharType char_type;

КомментарииRemarks

Тип является синонимом для параметра-шаблона Chartype.The type is a synonym for the template parameter CharType.

money_get::d o_getmoney_get::do_get

Виртуальная функция, которая вызывается для извлечения числового значения из последовательности символов, которая представляет денежное значение.Virtual function called to extracts a numerical value from a character sequence that represents a monetary value.

virtual iter_type do_get(iter_type first,
    iter_type last,
    bool Intl,
    ios_base& Iosbase,
    ios_base::iostate& State,
    long double& val) const virtual iter_type do_get(iter_type first,
    iter_type last,
    bool Intl,
    ios_base& Iosbase,
    ios_base::iostate& State,
    string_type& val) const

ПараметрыParameters

начальfirst
Входной итератор, адресующий начало последовательности для преобразования.Input iterator addressing the beginning of the sequence to be converted.

Последняяlast
Входной итератор, адресующий конец последовательности для преобразования.Input iterator addressing the end of the sequence to be converted.

IntlIntl
Логическое значение, указывающее тип символа валюты, ожидаемого в последовательности: true Если международная, то false если он является внутренним.A Boolean value indicating the type of currency symbol expected in the sequence: true if international, false if domestic.

IosbaseIosbase
Флаг формата, который, будучи установленным, указывает, что символ валюты не обязателен; в противном случае он обязателен.A format flag which when set indicates that the currency symbol is optional; otherwise, it is required.

СState
Устанавливает нужные элементы битовой маски для состояния потока согласно тому, успешно ли выполнились операции.Sets the appropriate bitmask elements for the stream state according to whether the operations succeeded or not.

Valval
Строка, хранящая преобразованную последовательность.A string storing the converted sequence.

Возвращаемое значениеReturn Value

Входной итератор, адресующий первый элемент после денежного поля ввода.An input iterator addressing the first element beyond the monetary input field.

КомментарииRemarks

Первая защищенная виртуальная функция-член пытается сопоставить последовательные элементы, начиная с первого в последовательности [ first, last), пока не распознает полное, непустое денежное поле ввода.The first virtual protected member function tries to match sequential elements beginning at first in the sequence [ first, last) until it has recognized a complete, nonempty monetary input field. В случае успеха оно преобразует это поле в последовательность из одной или нескольких десятичных цифр, при необходимости перед знаком минуса ( - ), чтобы представить сумму и сохранить результат в string_type объект Val.If successful, it converts this field to a sequence of one or more decimal digits, optionally preceded by a minus sign ( -), to represent the amount and stores the result in the string_type object val. Она возвращает итератор, обозначающий первый элемент после денежного поля ввода.It returns an iterator designating the first element beyond the monetary input field. В противном случае функция сохраняет пустую последовательность в Val и задает ios_base::failbit в состоянии.Otherwise, the function stores an empty sequence in val and sets ios_base::failbit in State. Она возвращает итератор, обозначающий первый элемент после любого префикса допустимого денежного поля ввода.It returns an iterator designating the first element beyond any prefix of a valid monetary input field. В любом случае, если возвращаемое значение равно last, функция устанавливает ios_base::eofbit в State.In either case, if the return value equals last, the function sets ios_base::eofbit in State.

Вторая виртуальная Защищенная функция-член ведет себя так же, как и первая, за исключением того, что при успешном выполнении она преобразует последовательность цифр со знаком подписывания в значение типа long double и сохраняет это значение в аргументе Val.The second virtual protected member function behaves the same as the first, except that if successful it converts the optionally signed digit sequence to a value of type long double and stores that value in val.

Формат поля денежного ввода определяется с помощью аспекта localefac , возвращаемого эффективным вызовом use_facet < moneypunct < CharType, intl>> ( iosbase.The format of a monetary input field is determined by the locale facetfac returned by the effective call use_facet < moneypunct< CharType, intl>>( iosbase. getloc).getloc).

В частности:Specifically:

  • fac.fac. neg_format определяет порядок, в котором будут расположены компоненты поля.neg_format determines the order in which components of the field occur.

  • fac.fac. curr_symbol определяет последовательность элементов, составляющую символ валюты.curr_symbol determines the sequence of elements that constitutes a currency symbol.

  • fac.fac. positive_sign определяет последовательность элементов, составляющую положительный знак.positive_sign determines the sequence of elements that constitutes a positive sign.

  • fac.fac. positive_sign определяет последовательность элементов, составляющую отрицательный знак.negative_sign determines the sequence of elements that constitutes a negative sign.

  • fac.fac. grouping определяет, как группируются цифры слева от любого десятичного разделителя.grouping determines how digits are grouped to the left of any decimal point.

  • fac.fac. thousands_sep определяет элемент, разделяющий группы цифр слева от любого десятичного разделителя.thousands_sep determines the element that separates groups of digits to the left of any decimal point.

  • fac.fac. decimal_point определяет элемент, который отделяет цифры целой части от цифр дробной части.decimal_point determines the element that separates the integer digits from the fraction digits.

  • fac.fac. frac_digits определяет количество значимых цифр дробной части справа от любого десятичного разделителя.frac_digits determines the number of significant fraction digits to the right of any decimal point. При разборе денежной суммы, в которой больше цифр после запятой, чем требуется frac_digits, do_get прекращает разбор после как максимум frac_digits символов.When parsing a monetary amount with more fraction digits than are called for by frac_digits, do_get stops parsing after consuming at most frac_digits characters.

Если строка знака (fac.If the sign string ( fac. negative_sign или fac.negative_sign or fac. positive_sign) имеет более одного элемента, сопоставляется только первый элемент, если элемент, равный money_base::sign появляется в шаблоне формата ( fac.positive_sign) has more than one element, only the first element is matched where the element equal to money_base::sign appears in the format pattern ( fac. neg_format).neg_format). Любые остающиеся элементы сопоставляются в конце денежного поля ввода.Any remaining elements are matched at the end of the monetary input field. Если ни одна из строк не имеет первого элемента, который соответствует следующему элементу в денежном поле ввода, строка знака считается пустой, а знак — положительным.If neither string has a first element that matches the next element in the monetary input field, the sign string is taken as empty and the sign is positive.

Если iosbase.If iosbase. Флаги & showbase имеет ненулевое значение, строка fac.flags & showbase is nonzero, the string fac. curr_symbol должна соответствовать в том месте, где в шаблоне формата возникает элемент, равный money_base::symbol.curr_symbol must match where the element equal to money_base::symbol appears in the format pattern. В противном случае, если money_base::symbol возникает в конце шаблона формате и если не осталось элементов строки знака для сопоставления, символ валюты не сопоставляется.Otherwise, if money_base::symbol occurs at the end of the format pattern, and if no elements of the sign string remain to be matched, the currency symbol is not matched. В противном случае символ валюты при необходимости сопоставляется.Otherwise, the currency symbol is optionally matched.

Если в части значения числового поля ввода не появляется экземпляров fac.If no instances of fac. thousands_sep (если в шаблоне формата есть элемент, равный money_base::value), ограничения группировки не применяются.thousands_sep occur in the value portion of the monetary input field (where the element equal to money_base::value appears in the format pattern), no grouping constraint is imposed. В противном случае применяются любые ограничения группировки, определяемые в fac.Otherwise, any grouping constraints imposed by fac. grouping.grouping is enforced. Обратите внимание, что результирующая последовательность цифр представляет собой целое число, чьи младшие десятичные цифры fac.Note that the resulting digit sequence represents an integer whose low-order fac. frac_digits считаются находящимися справа от десятичного разделителя.frac_digits decimal digits are considered to the right of the decimal point.

Произвольный пробел считается соответствующим, если в шаблоне формата появляется элемент, равный money_base::space, если он находится не в конце шаблона формата.Arbitrary white space is matched where the element equal to money_base::space appears in the format pattern, if it appears other than at the end of the format pattern. В противном случае внутренние пробелы не сопоставляются.Otherwise, no internal white space is matched. Элемент CH считается пробелом, если use_facet < CType < CharType> > ( iosbase.An element ch is considered white space if use_facet < ctype< CharType> >( iosbase. getloc).getloc). имеет Размер (ctype_base:: Space, CH) true .is( ctype_base::space, ch) is true.

ПримерExample

См. пример для get, в котором вызывается do_get.See the example for get, which calls do_get.

money_get:: Getmoney_get::get

Извлекает числовое значение из последовательности символов, представляющей денежное значение.Extracts a numerical value from a character sequence that represents a monetary value.

iter_type get(iter_type first,
    iter_type last,
    bool Intl,
    ios_base& Iosbase,
    ios_base::iostate& State,
    long double& val) const;

iter_type get(iter_type first,
    iter_type last,
    bool Intl,
    ios_base& Iosbase,
    ios_base::iostate& State,
    string_type& val) const;

ПараметрыParameters

начальfirst
Входной итератор, адресующий начало последовательности для преобразования.Input iterator addressing the beginning of the sequence to be converted.

Последняяlast
Входной итератор, адресующий конец последовательности для преобразования.Input iterator addressing the end of the sequence to be converted.

IntlIntl
Логическое значение, указывающее тип символа валюты, ожидаемого в последовательности: true Если международная, то false если он является внутренним.A Boolean value indicating the type of currency symbol expected in the sequence: true if international, false if domestic.

IosbaseIosbase
Флаг формата, который при установке указывает, что символ валюты является необязательным. В противном случае он обязателен.A format flag which when set indicates that the currency symbol is optional; otherwise, it is required

СState
Устанавливает нужные элементы битовой маски для состояния потока согласно тому, успешно ли выполнились операции.Sets the appropriate bitmask elements for the stream state according to whether the operations succeeded.

Valval
Строка, хранящая преобразованную последовательность.A string storing the converted sequence.

Возвращаемое значениеReturn Value

Входной итератор, адресующий первый элемент после денежного поля ввода.An input iterator addressing the first element beyond the monetary input field.

КомментарииRemarks

Обе функции элементов возвращают do_get (first, last, Intl, Iosbase, State, val) .Both member functions return do_get(first, last, Intl, Iosbase, State, val).

ПримерExample

// money_get_get.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <sstream>
using namespace std;

int main( )
{
   locale loc( "german_germany" );

   basic_stringstream< char > psz;
   psz << use_facet<moneypunct<char, 1> >(loc).curr_symbol() << "-1.000,56";
   basic_stringstream< char > psz2;
   psz2 << "-100056" << use_facet<moneypunct<char, 1> >(loc).curr_symbol();

   ios_base::iostate st = 0;
   long double fVal;

   psz.flags( psz.flags( )|ios_base::showbase );
   // Which forced the READING the currency symbol
   psz.imbue(loc);
   use_facet < money_get < char > >( loc ).
      get( basic_istream<char>::_Iter( psz.rdbuf( ) ),
           basic_istream<char>::_Iter( 0 ), true, psz, st, fVal );

   if ( st & ios_base::failbit )
      cout << "money_get(" << psz.str( ) << ", intl = 1) FAILED"
           << endl;
   else
      cout << "money_get(" << psz.str( ) << ", intl = 1) = "
           << fVal/100.0 << endl;

   use_facet < money_get < char > >( loc ).
      get(basic_istream<char>::_Iter(psz2.rdbuf( )),
          basic_istream<char>::_Iter(0), false, psz2, st, fVal);

   if ( st & ios_base::failbit )
      cout << "money_get(" << psz2.str( ) << ", intl = 0) FAILED"
           << endl;
   else
      cout << "money_get(" << psz2.str( ) << ", intl = 0) = "
           << fVal/100.0 << endl;
};

money_get:: iter_typemoney_get::iter_type

Тип, который описывает итератор ввода.A type that describes an input iterator.

typedef InputIterator iter_type;

КомментарииRemarks

Этот тип является синонимом для параметра-шаблона InputIterator.The type is a synonym for the template parameter InputIterator.

money_get:: money_getmoney_get::money_get

Конструктор для объектов типа money_get, используемых для извлечения числовых значений из последовательностей, представляющих денежные значения.The constructor for objects of type money_get that are used to extract numerical values from sequences representing monetary values.

explicit money_get(size_t _Refs = 0);

ПараметрыParameters

_Refs_Refs
Целочисленное значение, используемое для указания типа управления памятью для объекта.Integer value used to specify the type of memory management for the object.

КомментарииRemarks

Возможные значения параметра _Refs и их значимость:The possible values for the _Refs parameter and their significance are:

  • 0: время существования объекта управляется языковыми стандартами, которые его содержат.0: The lifetime of the object is managed by the locales that contain it.

  • 1: время существования объекта должно управляться вручную.1: The lifetime of the object must be manually managed.

  • > 1: эти значения не определены.> 1: These values are not defined.

Прямые примеры привести нельзя, так как деструктор защищен.No direct examples are possible, because the destructor is protected.

Конструктор инициализирует свой базовый объект с языковым стандартом::Facet(_Refs).The constructor initializes its base object with locale::facet(_Refs).

money_get:: string_typemoney_get::string_type

Тип, который описывает строку символов типа CharType.A type that describes a string containing characters of type CharType.

typedef basic_string<CharType, Traits, Allocator> string_type;

КомментарииRemarks

Тип описывает специализацию шаблона класса basic_string.The type describes a specialization of class template basic_string.

См. также разделSee also

<locale>
Класс аспектаfacet Class
Безопасность потоков в стандартной библиотеке C++Thread Safety in the C++ Standard Library