Namespaces
Variants

std:: formatter <std::chrono::year_month_weekday>

From cppreference.net
헤더 파일에 정의됨 <chrono>
template < class CharT >
struct formatter < std:: chrono :: year_month_weekday , CharT > ;
(C++20부터)

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

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 객체는 다음과 같이 서식화됩니다: 스트리밍 을 통해 os 타입의 객체에 기록하는 것처럼, std:: basic_ostringstream < CharT > 형식의 객체 os 에 서식 로케일( std:: locale :: classic ( ) , 전달된 std::locale 객체, 또는 std:: locale :: global ( ) ) 중 하나)을 적용한 후, os. str ( ) 을 출력 버퍼에 복사하고 형식 지정자에 따른 추가 패딩과 조정을 수행합니다.

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

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

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

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

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

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

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

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

%b
%h
로케일의 약식 월 이름을 출력합니다.
%B 로케일의 전체 월 이름을 출력합니다.
%m
%Om
월을 십진수로 출력합니다(1월은 01 ). 결과가 한 자리인 경우 앞에 0을 붙입니다.

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

%d
%Od
일자를 십진수로 출력합니다. 결과가 한 자리 십진수인 경우 앞에 0을 붙입니다.

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

%e
%Oe
일자를 십진수로 출력합니다. 결과가 한 자리 십진수인 경우 앞에 공백을 붙입니다.

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

요일
%a 로케일의 약식 요일 이름을 출력합니다.
%A 로케일의 전체 요일 이름을 출력합니다.
%u
%Ou
ISO 요일을 십진수(1-7)로 출력합니다. 여기서 월요일은 1 입니다.

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

%w
%Ow
요일을 십진수(0-6)로 출력합니다. 여기서 일요일은 0 입니다.

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

ISO 8601 주 기반 연도

ISO 8601에서 주는 월요일부터 시작하며, 연도의 첫 번째 주는 다음 요건을 충족해야 합니다:

  • 1월 4일을 포함합니다
  • 연도의 첫 번째 목요일을 포함합니다
%g ISO 8601 주 기반 연도의 마지막 두 자리 십진수를 출력합니다. 결과가 한 자리인 경우 앞에 0을 붙입니다.
%G ISO 8601 주 기반 연도를 십진수로 출력합니다. 결과가 네 자리 미만인 경우 네 자리가 되도록 왼쪽에 0을 채웁니다.
%V
%OV
ISO 8601 연중 주를 십진수로 출력합니다. 결과가 한 자리인 경우 앞에 0을 붙입니다.

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

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

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

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

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

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

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

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

변환
지정자
설명
시간대
%H
%OH
24시간제 시간을 10진수로 기록합니다. 결과가 한 자리 숫자인 경우 0을 접두사로 붙입니다.

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

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

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

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

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

%S
%OS
초를 10진수로 기록합니다. 초가 10보다 작은 경우 결과에 0을 접두사로 붙입니다.

입력의 정밀도를 초 단위로 정확히 표현할 수 없는 경우, 고정 형식의 10진 부동 소수점 숫자로 기록되며 입력의 정밀도와 일치하는 정밀도를 가집니다(또는 10진수 초로 변환할 때 소수점 이하 18자리 내에서 표현할 수 없는 경우 마이크로초 정밀도로 기록됨). 소수점 문자는 로캘에 따라 지역화됩니다.

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

%p 12시간제와 관련된 로캘의 AM/PM 표기를 기록합니다.
%R "%H:%M" 과 동등합니다.
%T "%H:%M:%S" 과 동등합니다.
%r 로캘의 12시간제 시간을 기록합니다.
%X
%EX
로캘의 시간 표현을 기록합니다.

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

지속 시간 카운트
%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++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
P2372R3 C++20 formatter 가 전역 로케일이나 전달된 로케일을 사용함 L 가 없을 때 기본 "C" 로케일이 사용됨

참고 항목

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