Namespaces
Variants

std:: numpunct

From cppreference.net
헤더 파일에 정의됨 <locale>
template < class CharT >
class numpunct ;

패싯 std::numpunct 는 숫자 구두점 기본 설정을 캡슐화합니다. 스트림 I/O 연산은 숫자 입력 파싱과 숫자 출력 형식 지정을 위해 std::num_get std::num_put 을 통해 std::numpunct 를 사용합니다.

std::numpunct 에서 지원하는 숫자는 아래에 설명된 형식을 갖습니다. 여기서 digit fmtflags 인수 값으로 지정된 기수 집합을 나타내며, thousands-sep decimal-point 는 각각 thousands_sep() 함수와 decimal_point() 함수의 결과입니다.

정수 값의 형식은 다음과 같습니다:

integer     ::= [sign] units
sign        ::= plusminus
plusminus   ::= '+' | '-'
units       ::= digits [thousands-sep units]
digits      ::= digit [digits]

thousand-sep 사이의 자릿수( digits 의 최대 크기)는 grouping() 의 결과로 지정됩니다.

부동 소수점 값의 형식은 다음과 같습니다:

floatval    ::= [sign] units [decimal-point [digits]] [e [sign] digits] |
                [sign]        decimal-point  digits   [e [sign] digits]
e           ::= 'e' | 'E'
cpp/locale/locale/facet std-numpunct-inheritance.svg

상속 다이어그램

목차

특수화

표준 라이브러리는 다음과 같은 특수화를 제공함을 보장합니다 (이들은 모든 locale 객체에 의해 구현되어야 하는 요구사항 입니다):

헤더 파일에 정의됨 <locale>
std :: numpunct < char > "C" 로케일 기본 설정에 해당하는 기능을 제공함
std :: numpunct < wchar_t > "C" 로케일 기본 설정에 대한 와이드 문자 버전을 제공함

중첩 타입

유형 정의
char_type CharT
string_type std:: basic_string < CharT >

데이터 멤버

멤버 설명
std::locale::id id [static] 패싯 의 식별자

멤버 함수

새로운 numpunct 패싯을 생성함
(public member function)
numpunct 패싯을 소멸함
(protected member function)
do_decimal_point 를 호출함
(public member function)
do_thousands_sep 를 호출함
(public member function)
do_grouping 를 호출함
(public member function)
do_truename 또는 do_falsename 을 호출함
(public member function)

보호된 멤버 함수

소수점으로 사용할 문자를 제공함
(가상 protected 멤버 함수)
천 단위 구분자로 사용할 문자를 제공함
(가상 protected 멤버 함수)
[virtual]
천 단위 구분자 사이의 숫자 자릿수를 제공함
(가상 protected 멤버 함수)
불리언 true false 의 이름으로 사용할 문자열을 제공함
(가상 protected 멤버 함수)

예제

다음 예제는 true false 의 문자열 표현을 변경합니다:

#include <iostream>
#include <locale>
struct french_bool : std::numpunct<char>
{
    string_type do_truename() const override { return "vrai"; }
    string_type do_falsename() const override { return "faux"; }
};
int main()
{
    std::cout << "default locale: "
              << std::boolalpha << true << ", " << false << '\n';
    std::cout.imbue(std::locale(std::cout.getloc(), new french_bool));
    std::cout << "locale with modified numpunct: "
              << std::boolalpha << true << ", " << false << '\n';
}

출력:

default locale: true, false
locale with modified numpunct: vrai, faux

결함 보고서

다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
LWG 338 C++98 sign 토큰이 + 또는 - 뒤에 선택적 공백을 허용함 공백 제거

참고 항목

명명된 로캘에 대한 numpunct 패싯을 생성합니다
(클래스 템플릿)