std:: num_put
|
헤더 파일에 정의됨
<locale>
|
||
|
template
<
class
CharT,
|
||
클래스
std::num_put
은 숫자 값을 문자열로 포맷팅하는 규칙을 캡슐화합니다. 구체적으로,
bool
,
long
,
unsigned
long
,
long
long
,
unsigned
long
long
(C++11 이후)
,
double
,
long
double
,
void
*
, 그리고 이들로 암시적으로 변환 가능한 모든 타입들(예:
int
또는
float
)이 지원됩니다. 표준 포맷팅 출력 연산자들(예:
cout
<<
n
;
)은 숫자의 텍스트 표현을 생성하기 위해 I/O 스트림의 로캘의
std::num_put
패싯을 사용합니다.
상속 다이어그램
만약
std::num_put
특수화가 표준 라이브러리에서 제공된다는 보장이 없는 경우(아래 참조), 해당
put()
및
do_put()
함수의 동작은 명시된 대로 보장되지 않습니다.
목차 |
특수화
표준 라이브러리는 다음과 같은 특수화를 제공함을 보장합니다 (이들은 모든 locale 객체에 의해 구현되어야 하는 요구사항 입니다):
|
헤더 파일에 정의됨
<locale>
|
|
| std :: num_put < char > | 숫자의 좁은 문자열 표현을 생성함 |
| std :: num_put < wchar_t > | 숫자의 넓은 문자열 표현을 생성함 |
또한, 표준 라이브러리는 다음 타입 요구사항을 충족하는 모든 특수화를 제공하는 것도 보장됩니다:
-
CharT는 다음 중 하나입니다:- char ,
- wchar_t , 그리고
- 구현에서 정의된 다른 문자 컨테이너 타입 으로, iostream 컴포넌트 가 인스턴스화될 수 있는 문자 요구사항을 충족하는 것; 그리고
-
OutputIt는 LegacyOutputIterator 요구사항을 충족해야 합니다.
중첩 타입
| 유형 | 정의 |
char_type
|
CharT
|
iter_type
|
OutputIt
|
데이터 멤버
| 멤버 | 설명 |
std::locale::id
id
[static]
|
facet 의 식별자 |
멤버 함수
새로운
num_put
패싯을 생성합니다
(public member function) |
|
do_put
을 호출합니다
(public member function) |
보호된 멤버 함수
num_put
패싯을 파괴함
(protected member function) |
|
|
[virtual]
|
숫자를 형식화하고 출력 스트림에 기록함
(virtual protected member function) |
예제
#include <iostream> #include <iterator> #include <locale> #include <string> int main() { double n = 1234567.89; std::cout.imbue(std::locale("de_DE.UTF-8")); std::cout << "Direct conversion to string:\n" << std::to_string(n) << '\n' << "Output using a german locale:\n" << std::fixed << n << '\n' << "Output using an american locale:\n"; // use the facet directly std::cout.imbue(std::locale("en_US.UTF-8")); auto& f = std::use_facet<std::num_put<char>>(std::cout.getloc()); f.put(std::ostreambuf_iterator<char>(std::cout), std::cout, ' ', n); std::cout << '\n'; }
가능한 출력:
Direct conversion to string: 1234567.890000 Output using a german locale: 1.234.567,890000 Output using an american locale: 1,234,567.890000
결함 보고서
다음 동작 변경 결함 보고서는 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 수정된 동작 |
|---|---|---|---|
| LWG 427 | C++98 |
num_put
은 모든
CharT
를 수용하도록 보장됨
(iostream 구성 요소가 인스턴스화될 수 있는 모든 문자 요구사항을 충족하는 경우) |
char
,
wchar_t 및 다른 구현 정의 문자 타입만 수용하도록 보장 |
| LWG 2392 | C++98 |
문자 타입
CharT
만이
num_put
에 의해 수용될 수 있음이 보장됨
|
구현 정의 문자 컨테이너 타입도
수용할 수 있도록 보장 가능 |
참고 항목
|
숫자 구두점 규칙을 정의함
(클래스 템플릿) |
|
|
입력 문자 시퀀스에서 숫자 값을 파싱함
(클래스 템플릿) |
|
|
(C++11)
|
정수 또는 부동 소수점 값을
string
으로 변환함
(함수) |
|
(C++11)
|
정수 또는 부동 소수점 값을
wstring
으로 변환함
(함수) |