Share via


money_put 클래스

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

구문

template <class CharType,
    class OutputIterator = ostreambuf_iterator<CharType>>
class money_put : public locale::facet;

매개 변수

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

OutputIterator
통화 put 함수가 출력을 쓰는 반복기의 형식입니다.

설명

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

생성자

생성자 Description
money_put money_put 형식의 개체에 대한 생성자입니다.

Typedef

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

멤버 함수

멤버 함수 설명
do_put 숫자 또는 문자열을 통화 값을 나타내는 문자 시퀀스로 변환하기 위해 호출하는 가상 함수입니다.
put 숫자 또는 문자열을 통화 값을 나타내는 문자 시퀀스로 변환합니다.

요구 사항

헤더:<로캘>

네임스페이스: std

money_put::char_type

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

typedef CharType char_type;

설명

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

money_put::d o_put

숫자 또는 문자열을 통화 값을 나타내는 문자 시퀀스로 변환하기 위해 호출하는 가상 함수입니다.

virtual iter_type do_put(
    iter_type next,
    bool _Intl,
    ios_base& _Iosbase,
    CharType _Fill,
    const string_type& val) const;

virtual iter_type do_put(
    iter_type next,
    bool _Intl,
    ios_base& _Iosbase,
    CharType _Fill,
    long double val) const;

매개 변수

next
삽입된 문자열의 첫 번째 요소 주소를 지정하는 반복기입니다.

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

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

_채우기
간격에 사용되는 문자입니다.

val
변환할 문자열 개체입니다.

Return Value

생성된 마지막 요소에서 한 위치 다음의 위치 주소를 지정하는 출력 반복기입니다.

설명

첫 번째 가상 보호 멤버 함수는 string_type 개체 val에서 통화 출력 필드를 생성하기 위해 옆에서 시작하는 순차적 요소를 생성합니다. val에 의해 제어되는 시퀀스는 하나 이상의 10진수로 시작해야 하며, 필요에 따라 빼기 기호(-)가 그 크기를 나타냅니다. 함수는 생성된 통화 출력 필드를 벗어난 범위에 있는 첫 번째 요소를 지정하는 반복기를 반환합니다.

두 번째 가상 보호 멤버 함수는 첫 번째 함수와 동일하게 동작합니다. 단, val을 10진수 시퀀스로 효과적으로 변환하고 선택적으로 빼기 기호 앞에 빼기 기호로 변환한 다음 위와 같이 해당 시퀀스를 변환합니다.

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

특별한 사항

  • fac. pos_format은 음수가 아닌 값에 대해 필드 구성 요소가 생성되는 순서를 결정합니다.

  • fac. neg_format은 음수 값에 대해 필드 구성 요소가 생성되는 순서를 결정합니다.

  • fac. curr_symbol은 통화 기호에 대해 생성할 요소 시퀀스를 결정합니다.

  • fac. positive_sign은 양수 기호에 대해 생성할 요소 시퀀스를 결정합니다.

  • fac. negative_sign은 음수 기호에 대해 생성할 요소 시퀀스를 결정합니다.

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

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

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

  • fac. frac_digits는 소수점 오른쪽에 있는 유효 소수 자릿수의 수를 결정합니다.

기호 문자열(fac. negative_sign 또는 fac.positive_sign)에 요소가 두 개 이상 있는 경우 첫 번째 요소만 생성됩니다. 여기서 요소가 money_base::sign과 같은 요소가 형식 패턴(fac. neg_format 또는 fac.pos_format)에 나타납니다. 나머지 요소는 통화 출력 필드의 끝에 생성됩니다.

iosbase. flags & showbase 가 0이 아닌 문자열 fac입니다. curr_symbol이 생성되며, money_base::symbol과 동일한 요소가 형식 패턴에 나타납니다. 그렇지 않은 경우에는 통화 기호가 생성되지 않습니다.

fac, grouping에 의해 그룹화 제약 조건이 적용되지 않는 경우(해당 첫 번째 요소값이 CHAR_MAX임) fac. thousands_sep의 인스턴스가 통화 출력 필드의 값 부분에 생성되지 않습니다. 이 필드에는 money_base::value와 동일한 요소가 형식 패턴에 나타납니다. fac. frac_digits가 0이면 소수 자릿수 뒤에 fac. decimal_point의 인스턴스가 생성되지 않습니다. 그렇지 않은 경우 결과 통화 출력 필드에서 하위 순서 fac. frac_digits 소수 자릿수가 소수점 오른쪽에 배치됩니다.

모든 숫자 출력 필드에 대해서는 채우기가 수행됩니다. 단, iosbase. flagsiosbase. internal이 0이 아니면 내부 채우기가 생성되며 money_base::space와 동일한 요소가 형식 패턴에 나타납니다(나타나는 경우). 그렇지 않으면 생성된 시퀀스 앞에서 내부 채우기가 수행됩니다. 채우기 문자는 fill입니다.

함수는 iosbase. width(0)을 호출하여 필드 너비를 0으로 다시 설정합니다.

예시

put에 의해 가상 구성원 함수가 호출되는 put의 예제를 참조하세요.

money_put::iter_type

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

typedef OutputIterator iter_type;

설명

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

money_put::money_put

money_put 형식의 개체에 대한 생성자입니다.

explicit money_put(size_t _Refs = 0);

매개 변수

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

설명

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

  • 0: 개체가 포함된 로캘에서 개체의 수명을 관리합니다.

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

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

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

생성자는 locale::facet( _Refs)를 통해 해당 기준 개체를 초기화합니다.

money_put::p ut

숫자 또는 문자열을 통화 값을 나타내는 문자 시퀀스로 변환합니다.

iter_type put(
    iter_type next,
    bool _Intl,
    ios_base& _Iosbase,
    CharType _Fill,
    const string_type& val) const;

iter_type put(
    iter_type next,
    bool _Intl,
    ios_base& _Iosbase,
    CharType _Fill,
    long double val) const;

매개 변수

next
삽입된 문자열의 첫 번째 요소 주소를 지정하는 반복기입니다.

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

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

_채우기
간격에 사용되는 문자입니다.

val
변환할 문자열 개체입니다.

Return Value

생성된 마지막 요소에서 한 위치 다음의 위치 주소를 지정하는 출력 반복기입니다.

설명

두 구성원 함수는 모두 do_put( next, _Intl, _Iosbase, _Fill, val)을 반환합니다.

예시

// money_put_put.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <sstream>

int main()
{
    std::locale loc( "german_germany" );
    std::basic_stringstream<char> psz;

    psz.imbue(loc);
    psz.flags(psz.flags() | std::ios_base::showbase); // force the printing of the currency symbol
    std::use_facet<std::money_put<char> >(loc).put(std::basic_ostream<char>::_Iter(psz.rdbuf()), true, psz, ' ', 100012);
    if (psz.fail())
        std::cout << "money_put() FAILED" << std::endl;
    else
        std::cout << "money_put() = \"" << psz.rdbuf()->str() << "\"" << std::endl;
}
money_put() = "EUR1.000,12"

money_put::string_type

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

typedef basic_string<CharType, Traits, Allocator> string_type;

설명

이 형식은 개체가 소스 시퀀스의 요소 시퀀스를 저장할 수 있는 클래스 템플릿 basic_string 특수화를 설명합니다.

참고 항목

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