Share via


money_get 클래스

클래스 템플릿은 형식 CharType 시퀀스를 통화 값으로 변환하는 것을 제어하는 로캘 패싯 역할을 할 수 있는 개체를 설명합니다.

구문

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

매개 변수

Chartype
로캘의 문자를 인코딩하기 위해 프로그램 내 사용하는 형식입니다.

InputIterator
get 함수가 입력을 읽어올 반복기의 형식입니다.

설명

모든 로캘 패싯과 마찬가지로, 고정 개체 ID에는 초기값 0이 저장되어 있습니다. 저장된 값에 액세스를 처음 시도하면 id에 고유한 양수 값이 저장됩니다.

생성자

생성자 Description
money_get 통화 값을 나타내는 시퀀스에서 숫자 값을 추출하는 데 사용되는 money_get 형식의 개체에 대한 생성자입니다.

Typedef

형식 이름 설명
char_type 로캘에서 사용하는 문자를 설명하기 위해 사용하는 형식입니다.
iter_type 입력 반복기에 대해 설명하는 형식입니다.
string_type CharType 형식의 문자가 포함된 문자열을 설명하는 형식입니다.

멤버 함수

멤버 함수 설명
do_get 통화 값을 나타내는 문자 시퀀스에서 숫자 값을 추출하기 위해 호출하는 가상 함수입니다.
get 통화 값을 나타내는 문자 시퀀스에서 숫자 값을 추출합니다.

요구 사항

헤더:<로캘>

네임스페이스: std

money_get::char_type

로캘에서 사용하는 문자를 설명하기 위해 사용하는 형식입니다.

typedef CharType char_type;

설명

이 형식은 템플릿 매개 변수 CharType과 동일한 의미입니다.

money_get::d o_get

통화 값을 나타내는 문자 시퀀스에서 숫자 값을 추출하기 위해 호출하는 가상 함수입니다.

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

매개 변수

first
변환할 시퀀스의 시작 부분 주소를 지정하는 입력 반복기입니다.

last
변환할 시퀀스의 끝부분 주소를 지정하는 입력 반복기입니다.

국제공항
시퀀스에서 true 예상되는 통화 기호의 형식을 나타내는 부울 값입니다(국제인 경우, false 국내인 경우).

Iosbase
집합이 통화 기호가 선택 사항임을 나타낼 때 사용하는 형식 플래그입니다. 그 외의 경우 통화 기호는 필수 항목입니다.

State(상태)
작업 성공 여부에 따라 스트림 상태에 대해 적절한 비트 마스크 요소를 설정합니다.

val
변환된 시퀀스를 저장하는 문자열입니다.

Return Value

통화 입력 필드를 벗어난 범위에 있는 첫 번째 요소를 주소 지정하는 입력 반복기입니다.

설명

첫 번째 보호된 가상 구성원 함수는 비어 있지 않은 완전한 통화 입력 필드를 인식할 때까지 시퀀스 [ first, last)에서 처음 시작되는 순차 요소 일치를 시도합니다. 성공하면 이 필드를 하나 이상의 10진수 시퀀스로 변환하고, 필요에 따라 빼기 기호(-)가 앞에 와 크기를 나타내고 결과를 string_type 개체 val저장합니다. 이 함수는 통화 입력 필드를 벗어난 범위에 있는 첫 번째 요소를 지정하는 반복기를 반환합니다. 그렇지 않으면 함수는 빈 시퀀스를 val에 저장하고 상태를 설정합니다ios_base::failbit. 그리고 유효한 통화 입력 필드의 접두사를 벗어난 범위에 있는 첫 번째 요소를 지정하는 반복기를 반환합니다. 두 경우 모두 반환 값이 last와 같으면 함수는 State에서 ios_base::eofbit를 설정합니다.

두 번째 가상 보호 멤버 함수는 첫 번째 함수와 동일하게 동작합니다. 성공하면 선택적으로 부호 있는 숫자 시퀀스를 형식 long double 값으로 변환하고 해당 값을 val저장합니다.

통화 입력 필드의 형식은 유효 호출< use_facet moneypunct CharType, intl>>(iosbase)에서 반환된 로캘 패<팩에 의해 결정됩니다. getloc).

특별한 사항

  • fac. neg_format은 필드 구성 요소가 나타나는 순서를 결정합니다.

  • fac. curr_symbol은 통화 기호를 구성하는 요소 시퀀스를 결정합니다.

  • fac. positive_sign은 양수 기호를 구성하는 요소 시퀀스를 결정합니다.

  • fac. negative_sign은 음수 기호를 구성하는 요소 시퀀스를 결정합니다.

  • fac. grouping은 숫자가 소수점 왼쪽으로 그룹화되는 방법을 결정합니다.

  • fac. thousands_sep는 소수점 왼쪽의 숫자 그룹을 구분하는 요소를 결정합니다.

  • fac. decimal_point는 소수 자릿수와 정수 자릿수를 구분하는 요소를 결정합니다.

  • fac. frac_digits는 소수점 오른쪽에 있는 유효 소수 자릿수의 수를 결정합니다. frac_digits에서 호출한 것보다 소수 자릿수가 많은 금액을 구문 분석할 때 do_get은 최대 frac_digits자를 사용한 후 구문 분석을 중지합니다.

부호 문자열(fac. negative_sign 또는 fac.positive_sign)에 요소가 두 개 이상 있는 경우 첫 번째 요소만 일치합니다. 여기서 요소가 money_base::sign과 같은 요소가 형식 패턴(fac.neg_format)에 나타납니다. 나머지 요소는 통화 입력 필드의 끝에서 일치 여부를 확인합니다. 어떤 문자열에도 통화 입력 필드의 다음 요소와 일치하는 첫 번째 요소가 없으면 부호 문자열을 빈 문자열로 가져오며 양수 부호를 사용합니다.

iosbase. flags & showbase 가 0이 아닌 문자열 fac입니다. curr_symbol이 일치해야 하며, money_base::symbol과 동일한 요소가 형식 패턴에 나타납니다. 그렇지 않고 money_base::symbol이 형식 패턴 끝에 나오며 부호 문자열에서 일치 여부를 확인할 요소가 남아 있지 않으면 통화 기호의 일치 여부를 확인하지 않습니다. 그 외의 경우에는 필요에 따라 통화 기호의 일치 여부를 확인합니다.

통화 입력 필드의 값 부분에 fac. thousands_sep의 인스턴스가 나오지 않으면(money_base::value와 동일한 요소가 형식 패턴에 나타남) 그룹화 제양ㄱ 조건이 적용되지 않습니다. 그렇지 않으면 fac. grouping에서 적용하는 모든 그룹화 제약 조건이 적용됩니다. 결과 숫자 시퀀스는 하위 순서 fac. frac_digits 소수 자릿수가 소수점 오른쪽에 있는 것으로 간주하는 정수를 나타냅니다.

money_base::space와 동일한 요소가 형식 패턴에 나타나는 위치(해당 요소가 형식 패턴의 끝이 아닌 위치에 나타나는 경우)에서 임의의 공백 일치 여부를 확인합니다. 그렇지 않으면 내부 공백 일치 여부를 확인하지 않습니다. ctype<CharType>>(iosbase)을 use_facet<경우 요소 ch는 공백으로 간주됩니다. getloc). is( ctype_base::space, ch)는 true.

예시

do_get을 호출하는 get에 대한 예제를 참조하세요.

money_get::get

통화 값을 나타내는 문자 시퀀스에서 숫자 값을 추출합니다.

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;

매개 변수

first
변환할 시퀀스의 시작 부분 주소를 지정하는 입력 반복기입니다.

last
변환할 시퀀스의 끝부분 주소를 지정하는 입력 반복기입니다.

국제공항
시퀀스에서 true 예상되는 통화 기호의 형식을 나타내는 부울 값입니다(국제인 경우, false 국내인 경우).

Iosbase
집합이 통화 기호가 선택 사항임을 나타낼 때 사용하는 형식 플래그입니다. 그 외의 경우 통화 기호는 필수 항목입니다.

State(상태)
작업 성공 여부에 따라 스트림 상태에 대해 적절한 비트 마스크 요소를 설정합니다.

val
변환된 시퀀스를 저장하는 문자열입니다.

Return Value

통화 입력 필드를 벗어난 범위에 있는 첫 번째 요소를 주소 지정하는 입력 반복기입니다.

설명

두 멤버 함수는 모두 do_get(first, last, Intl, Iosbase, State, val) 반환합니다.

예시

// 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_type

입력 반복기에 대해 설명하는 형식입니다.

typedef InputIterator iter_type;

설명

이 형식은 템플릿 매개 변수 InputIterator와 동일한 의미입니다.

money_get::money_get

통화 값을 나타내는 시퀀스에서 숫자 값을 추출하는 데 사용되는 money_get 형식의 개체에 대한 생성자입니다.

explicit money_get(size_t _Refs = 0);

매개 변수

_심판
개체에 대한 메모리 관리의 유형을 지정하는 데 사용하는 정수 값입니다.

설명

_Refs 매개 변수 및 해당 중요도에 사용할 수 있는 값은 다음과 같습니다.

  • 0: 개체를 포함하는 로캘에 의해 개체의 수명이 관리됩니다.

  • 1: 개체의 수명을 수동으로 관리해야 합니다.

  • > 1: 이러한 값은 정의되지 않습니다.

소멸자는 보호되므로 직접적인 예제는 확인할 수 없습니다.

생성자는 로캘::facet(_Refs)를 사용하여 기본 개체를 초기화합니다.

money_get::string_type

CharType 형식의 문자가 포함된 문자열을 설명하는 형식입니다.

typedef basic_string<CharType, Traits, Allocator> string_type;

설명

이 형식은 클래스 템플릿 basic_string 특수화를 설명합니다.

참고 항목

<로캘>
facet 클래스
C++ 표준 라이브러리의 스레드 보안