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이 주어지면 로케일별 서식 지정에 사용해요.
CharT를 decltype(fmt)::char_type이라고 할 때, (1,3) 오버로드는 char, (2,4) 오버로드는 wchar_t예요.
이 오버로드들은 OutputIt이 std::output_iterator<const CharT&> 개념을 만족할 때만 오버로드 해석에 참여해요.
OutputIt은 std::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::pair와 std::tuple은 튜플 형식 지정으로 해석돼요. std::thread::id와 std::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에 매개변수화됨 |
매개변수화되지 않음 |