Namespaces
Variants

std:: formatter <std::chrono::year>

From cppreference.net
헤더에 정의됨 <chrono>
template < class CharT >
struct formatter < std:: chrono :: year , CharT > ;

std::formatter 의 특수화로, std::chrono::year 에 대한 서식 규칙을 정의합니다.

std::formatter 특수화는 일반적으로 직접 접근되지 않고, 서식 지정 함수 를 통해 사용됩니다.

형식 지정

형식 지정은 다음과 같은 형태를 가집니다

fill-and-align  (선택 사항) width  (선택 사항) precision  (선택 사항) L (선택 사항) chrono-spec  (선택 사항)

fill-and-align , width , 그리고 precision 표준 형식 지정 에서와 동일한 의미를 가집니다. precision 은 표현 타입 Rep 가 부동소수점 타입인 std::chrono::duration 타입에 대해서만 유효하며, 그렇지 않으면 std::format_error 가 발생합니다.

서식 지정에 사용되는 로케일은 다음과 같이 결정됩니다:

  • 형식 지정자에 L 이 존재하지 않으면 기본 "C" 로케일을 사용하며,
  • 그렇지 않고 서식 지정 함수에 전달된 std::locale 이 존재하면 해당 로케일을 사용하며,
  • 그 외의 경우 ( L 이 존재하지만 서식 지정 함수에 std::locale 이 전달되지 않은 경우) 전역 로케일을 사용합니다.

만약 (일반 또는 와이드) 문자열 리터럴 인코딩 이 유니코드 인코딩 형태이고 로캘이 구현에서 정의된 로캘 집합 중 하나인 경우, 로캘에 의존하는 각 대체는 대체 문자 시퀀스가 리터럴 인코딩으로 변환된 것처럼 수행됩니다.

chrono-spec 는 하나 이상의 변환 지정자와 일반 문자( { , } , % 제외)로 구성됩니다. chrono-spec 는 반드시 변환 지정자로 시작해야 합니다. 모든 일반 문자는 수정 없이 출력에 기록됩니다. 각 수정되지 않은 변환 지정자는 % 문자로 시작하며, 그 뒤에 지정자의 동작을 결정하는 문자가 옵니다. 일부 변환 지정자는 수정된 형태를 가지며, E 또는 O 수정 문자가 % 문자 뒤에 삽입됩니다. 각 변환 지정자는 아래에 설명된 대로 출력에서 적절한 문자로 대체됩니다.

달리 명시되지 않는 한, chrono-spec 가 비어 있는 경우, chrono 객체는 다음과 같이 서식 지정 로케일( std:: locale :: classic ( ) , 전달된 std::locale 객체, std:: locale :: global ( ) ) 중 하나)로 임뷰드 std:: basic_ostringstream < CharT > 타입의 객체 os 스트리밍 하는 것처럼 서식 지정되며, os. str ( ) 을 출력 버퍼에 복사하고 형식 지정자에 따른 추가 패딩 및 조정이 적용됩니다.

다음 형식 지정자를 사용할 수 있습니다:

변환 지정자
(Conversion specifier)
설명
%% 리터럴 % 문자를 기록합니다.
%n 개행 문자를 기록합니다.
%t 수평 탭 문자를 기록합니다.
연도
%C
%EC
연도를 100으로 나눈 값을 내림 나눗셈으로 기록합니다. 결과가 한 자리 십진수인 경우 앞에 0을 붙입니다.

수정 명령 %EC 는 로케일의 대체 세기 표현을 기록합니다.

%y
%Oy
%Ey
연도의 마지막 두 자리 십진수를 기록합니다. 결과가 한 자리 숫자인 경우 앞에 0을 붙입니다.

수정 명령 %Oy 는 로케일의 대체 표현을 기록합니다.

수정 명령 %Ey %EC (연도만 해당)로부터의 오프셋에 대한 로케일의 대체 표현을 기록합니다.

%Y
%EY
연도를 십진수로 기록합니다. 결과가 네 자리 미만인 경우 네 자리가 되도록 왼쪽에 0을 채웁니다.

수정 명령 %EY 는 로케일의 대체 전체 연도 표현을 기록합니다.

다음 지정자들은 인식되지만, std::format_error 가 발생하게 됩니다:

변환
지정자
설명
%b
%h
로케일의 축약형 월 이름을 출력합니다.
%B 로케일의 전체 월 이름을 기록합니다.
%m
%Om
월을 10진수 숫자로 기록합니다(1월은 01 ). 결과가 한 자리 숫자인 경우 0을 앞에 붙입니다.

수정 명령어 %Om 은 로캘의 대체 표현을 기록합니다.

일자
%d
%Od
날짜의 일(day)을 10진수로 기록합니다. 결과가 한 자리 숫자인 경우 0을 앞에 붙입니다.

수정 명령어 %Od 는 로케일의 대체 표현을 기록합니다.

%e
%Oe
일(day)을 십진수로 출력합니다. 결과가 한 자리 숫자인 경우 앞에 공백이 추가됩니다.

수정된 명령어 %Oe 는 로케일의 대체 표현을 출력합니다.

요일
%a 로케일의 약식 요일 이름을 기록합니다.
%A 로케일의 전체 요일 이름을 기록합니다.
%u
%Ou
ISO 평일을 10진수(1-7)로 기록하며, 여기서 월요일은 1 입니다.

수정된 명령어 %Ou 는 로캘의 대체 표현을 기록합니다.

%w
%Ow
요일을 10진수(0-6)로 기록하며, 여기서 일요일은 0 입니다.

수정된 명령어 %Ow 는 로캘의 대체 표현을 기록합니다.

ISO 8601 주 기반 연도

ISO 8601 표준에 따르면 주(week)는 월요일부터 시작하며, 연도의 첫 번째 주는 다음 요건을 충족해야 합니다:

  • 1월 4일을 포함해야 함
  • 해당 연도의 첫 번째 목요일을 포함해야 함
%g ISO 8601 주 기반 연도의 마지막 두 자리 숫자를 기록합니다. 결과가 한 자리 숫자인 경우 0을 접두사로 붙입니다.
%G ISO 8601 주 기반 연도를 10진수로 기록합니다. 결과가 네 자리 미만인 경우 0으로 왼쪽 채워 네 자리로 만듭니다.
%V
%OV
ISO 8601 주 번호를 10진수로 기록합니다. 결과가 한 자리 숫자인 경우 0을 접두사로 붙입니다.

수정된 명령어 %OV 는 로캘의 대체 표현을 기록합니다.

연중 주/일
%j 연중 일자를 십진수로 기록합니다(1월 1일은 001 ). 결과가 세 자리 미만인 경우 0으로 왼쪽 채움되어 세 자리가 됩니다.
%U
%OU
연중 주 번호를 10진수로 기록합니다. 연중 첫 번째 일요일이 01주차의 첫 번째 날입니다. 그 이전의 같은 해 날짜들은 00주차에 속합니다. 결과가 한 자리 숫자인 경우 0을 앞에 붙입니다.

수정된 명령어 %OU 는 로케일의 대체 표현을 기록합니다.

%W
%OW
연중 주 번호를 10진수로 기록합니다. 연중 첫 번째 월요일이 01주차의 첫 번째 날입니다. 그 이전의 같은 해 날짜들은 00주차에 속합니다. 결과가 한 자리 숫자인 경우 0을 앞에 붙입니다.

수정된 명령어 %OW 는 로케일의 대체 표현을 기록합니다.

날짜
%D "%m/%d/%y" 와 동일합니다.
%F "%Y-%m-%d" 와 동일합니다.
%x
%Ex
로케일의 날짜 표현을 기록합니다.

수정된 명령어 %Ex 는 로케일의 대체 날짜 표현을 생성합니다.

시간대
%H
%OH
24시간 기준으로 시간을 10진수로 기록합니다. 결과가 한 자리 숫자인 경우 0을 접두사로 붙입니다.

수정된 명령어 %OH 는 로케일의 대체 표현을 기록합니다.

%I
%OI
12시간제 시간을 10진수로 기록합니다. 결과가 한 자리 숫자인 경우 0을 접두사로 붙입니다.

수정된 명령어 %OI 는 로케일의 대체 표현을 기록합니다.

%M
%OM
분을 십진수로 기록합니다. 결과가 한 자리 숫자인 경우 0을 접두사로 붙입니다.

수정된 명령어 %OM 은 로캘의 대체 표현을 기록합니다.

%S
%OS
초를 10진수로 기록합니다. 초 수가 10보다 작은 경우, 결과 앞에 0이 붙습니다.

입력의 정밀도를 초 단위로 정확히 표현할 수 없는 경우, 고정 형식의 10진 부동 소수점 숫자로 표시하며, 입력의 정밀도와 일치하는 소수점 이하 자릿수를 사용합니다(18자리 이하의 소수부로 10진수 초 변환이 불가능한 경우 마이크로초 정밀도까지 표시). 소수점 문자는 로케일에 따라 지역화됩니다.

수정된 명령어 %OS 는 해당 로케일의 대체 표현을 기록합니다.

%p 12시간제 시계와 관련된 AM/PM 표기를 지역별 해당 표현으로 출력합니다.
%R "%H:%M" 에 해당합니다.
%T "%H:%M:%S" 와 동일합니다.
%r 해당 지역의 12시간제 시계 시간을 기록합니다.
%X
%EX
로케일의 시간 표현을 기록합니다.

수정된 명령어 %EX 는 로케일의 대체 시간 표현을 기록합니다.

Duration count
%Q 지속 시간의 틱 카운트를 기록합니다. 즉, count() 를 통해 얻은 값입니다.
%q 지속 시간의 단위 접미사를 기록하며, 이는 operator<<() 에 지정된 대로입니다.
시간대
%z
%Ez
%Oz
UTC 기준 시차를 ISO 8601 형식으로 기록합니다. 예를 들어 -0430 은 UTC보다 4시간 30분 뒤처짐을 나타냅니다. 시차가 0인 경우 +0000 이 사용됩니다.

수정된 명령어 %Ez %Oz 는 시와 분 사이에 : 를 삽입합니다 (예: -04:30 ).

%Z 시간대 약어를 기록합니다.
기타
%c
%Ec
로케일의 날짜 및 시간 표현을 기록합니다.

수정된 명령어 %Ec 은 로케일의 대체 날짜 및 시간 표현을 기록합니다.

예제

참고 항목

(C++20)
인수의 서식화된 표현을 새 문자열에 저장합니다
(함수 템플릿)