format_vformat_to

format_vformat_to (출력 반복자에 서식 지정 결과를 쓰는 함수)

이 페이지는 C++20에서 추가된 std::vformat_to 함수에 대해 설명해요. 이 함수는 형식 문자열과 이미 캡슐화된 형식 인자 목록(std::format_args)을 받아서 서식 지정한 결과를 출력 반복자에 써요. std::format_to와 달리 인자 목록을 직접 전달받는 대신 std::make_format_args로 만든 인자 묶음을 사용하는 점이 특징이에요.

출처: cppreference

본문

정의

<format> 헤더에 정의되어 있어요. 다음은 네 가지 오버로드예요.

오버로드 함수 시그니처 비고
(1) template < class OutputIt > OutputIt vformat_to ( OutputIt out , std :: string_view fmt , std :: format_args args ); (since C++20)
(2) template < class OutputIt > OutputIt vformat_to ( OutputIt out , std :: wstring_view fmt , std :: wformat_args args ); (since C++20)
(3) template < class OutputIt > OutputIt vformat_to ( OutputIt out , const std :: locale & loc , std :: string_view fmt , std :: format_args args ); (since C++20)
(4) template < class OutputIt > OutputIt vformat_to ( OutputIt out , const std :: locale & loc , std :: wstring_view fmt , std :: wformat_args args ); (since C++20)

args에 담긴 형식 인자들을 형식 문자열 fmt에 따라 서식 지정하고, 그 결과를 출력 반복자 out에 써요. loc이 주어지면 로케일별 서식 지정에 사용해요.

CharTdecltype(fmt)::char_type이라고 할 때, (1,3) 오버로드는 char, (2,4) 오버로드는 wchar_t예요.

이 오버로드들은 OutputItstd::output_iterator<const CharT&> 개념을 만족할 때만 오버로드 해석에 참여해요.

OutputItstd::output_iterator<const CharT&> 개념을 모델링해야 하고, 인자 타입의 각 Ti에 대해 std::formatter<Ti, CharT>가 Formatter 요구 사항을 충족해야 해요. 그렇지 않으면 동작이 정의되지 않아요.

매개변수

매개변수 설명
out 출력 버퍼를 가리키는 반복자
fmt 형식 문자열을 나타내는 객체. 형식 문자열은 일반 문자({} 제외), 이스케이프 시퀀스 {{}}(각각 {}로 치환됨), 그리고 치환 필드로 구성돼요. 각 치환 필드는 다음과 같은 형식을 가져요.
(1) { arg-id (optional) }
(2) { arg-id (optional) : format-spec }
1) 형식 지정이 없는 치환 필드
2) 형식 지정이 있는 치환 필드
arg-id - args에서 서식 지정에 사용할 인자의 인덱스를 지정해요. 생략하면 인자들이 순서대로 사용돼요. 형식 문자열의 arg-id는 모두 있거나 모두 생략되어야 해요. 수동 인덱싱과 자동 인덱싱을 섞는 것은 오류예요.
format-spec - 해당 인자에 대한 std::formatter 특수화에 의해 정의되는 형식 지정이에요. }로 시작할 수 없어요. 기본 타입과 표준 문자열 타입의 경우 표준 형식 지정으로 해석돼요. chrono 타입은 chrono 형식 지정, 범위 타입은 범위 형식 지정, std::pairstd::tuple은 튜플 형식 지정으로 해석돼요. std::thread::idstd::stacktrace_entry는 각각 스레드 ID 형식 지정과 스택트레이스 항목 형식 지정을 참고하세요. std::basic_stacktrace에는 형식 지정자를 사용할 수 없어요. (C++23부터) std::filesystem::path는 경로 형식 지정을 참고하세요. (C++26부터) 그 외 서식 가능한 타입은 사용자 정의 formatter 특수화에 따라 형식 지정이 결정돼요.
args 서식 지정할 인자들
loc 로케일별 서식 지정에 사용되는 std::locale

반환값

출력 범위의 끝을 가리키는 반복자를 반환해요.

예외

fmt가 제공된 인자에 대해 유효한 형식 문자열이 아니면 std::format_error를 던져요. 또한 formatter 또는 반복자 연산에서 발생한 예외도 전파해요.

예제

이 부분은 불완전해요. 이유: 예제 없음

결함 보고서

다음 동작 변경 결함 보고서는 이전에 공개된 C++ 표준에 소급 적용되었어요.

DR 적용 대상 공개된 동작 올바른 동작
P2216R3 C++20 args의 타입이 OutputIt에 매개변수화됨 매개변수화되지 않음

같이 보기

더 알아보기 (Learn more)

cppreference