std:: numpunct
|
헤더 파일에 정의됨
<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'
상속 다이어그램
목차 |
특수화
표준 라이브러리는 다음과 같은 특수화를 제공함을 보장합니다 (이들은 모든 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) |
보호된 멤버 함수
|
[virtual]
|
소수점으로 사용할 문자를 제공함
(가상 protected 멤버 함수) |
|
[virtual]
|
천 단위 구분자로 사용할 문자를 제공함
(가상 protected 멤버 함수) |
|
[virtual]
|
천 단위 구분자 사이의 숫자 자릿수를 제공함
(가상 protected 멤버 함수) |
|
[virtual]
|
불리언
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 패싯을 생성합니다
(클래스 템플릿) |