Namespaces
Variants

std:: basic_format_string, std:: format_string, std:: wformat_string

From cppreference.net
헤더 파일에 정의됨 <format>
template < class CharT, class ... Args >
struct basic_format_string ;
(1) (C++20부터)
template < class ... Args >

using format_string =

basic_format_string < char , std:: type_identity_t < Args > ... > ;
(2) (C++20부터)
template < class ... Args >

using wformat_string =

basic_format_string < wchar_t , std:: type_identity_t < Args > ... > ;
(3) (C++20부터)

클래스 템플릿 std::basic_format_string 는 포맷팅 함수들이 사용할 std::basic_string_view 를 감싸는 래퍼입니다.

std::basic_format_string 의 생성자는 컴파일 타임 형식 문자열 검사를 수행합니다 생성자 인수가 std::runtime_format 에 의해 반환된 경우가 아니면 (C++26부터) .

목차

멤버 함수

(constructor)
basic_format_string 을 생성하며, 인수가 형식 문자열이 아닌 경우 컴파일 오류를 발생시킴
(public member function)
get
래핑된 문자열을 반환함
(public member function)

std::basic_format_string:: basic_format_string

template < class T >
consteval basic_format_string ( const T & s ) ;
(1)
basic_format_string ( /* runtime-format-string */ < CharT > s ) noexcept ;
(2) (C++26부터)
1) 문자열 s 의 뷰를 저장하는 basic_format_string 객체를 생성합니다. 인자가 컴파일 타임 상수가 아니거나, 형식 인자 타입 Args 에 대한 형식 문자열로 파싱할 수 없는 경우 생성이 실패합니다.
이 오버로드는 다음 조건에서만 오버로드 해결에 참여합니다: const T & 가 다음을 만족하는 경우 std:: convertible_to < std:: basic_string_view < CharT >> .
2) basic_format_string 객체를 생성하며, 이 객체는 s 문자열의 뷰를 std::runtime_format 에 의해 반환된 형태로 저장합니다. 생성 시 포맷 문자열 검사를 수행하지 않습니다.

매개변수

s - 포맷 문자열을 나타내는 객체. 포맷 문자열은 다음으로 구성됩니다:
  • 일반 문자( { } 제외), 출력에 변경 없이 복사됩니다,
  • 이스케이프 시퀀스 { { } } , 출력에서 각각 { } 로 대체됩니다, 그리고
  • 치환 필드.

각 치환 필드는 다음 형식을 가집니다:

{ arg-id (선택사항) } (1)
{ arg-id (선택사항) : format-spec } (2)
1) 포맷 명세가 없는 치환 필드
2) 포맷 명세가 있는 치환 필드
arg-id - 포맷에 사용될 인수의 인덱스를 지정합니다; 생략된 경우 인수는 순서대로 사용됩니다.

포맷 문자열의 arg-id 들은 모두 존재하거나 모두 생략되어야 합니다. 수동 인덱싱과 자동 인덱싱을 혼합하는 것은 오류입니다.

format-spec - 해당 인수에 대한 std::formatter 특수화에 의해 정의된 포맷 명세. } 로 시작할 수 없습니다.

(C++23부터)
(C++26부터)
  • 다른 포맷 가능 타입의 경우, 포맷 명세는 사용자 정의 formatter 특수화에 의해 결정됩니다.

std::basic_format_string:: get

constexpr std:: basic_string_view < CharT > get ( ) const noexcept ;

저장된 문자열 뷰를 반환합니다.

참고 사항

별칭 템플릿 format_string wformat_string std::type_identity_t 를 사용하여 템플릿 인자 추론을 억제합니다. 일반적으로 이들이 함수 매개변수로 나타날 때, 해당 템플릿 인자는 다른 함수 인자들로부터 추론됩니다.

template<class... Args>
std::string format(std::format_string<Args...> fmt, Args&&... args);
auto s = format("{} {}", 1.0, 2);
// format<double, int>를 호출합니다. Args는 1.0, 2로부터 추론됩니다
// format_string에서 type_identity_t를 사용하기 때문에, 템플릿 인자 추론은
// 형식 문자열의 타입을 고려하지 않습니다

예제

결함 보고서

다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
P2508R1 C++20 이 기능에 대한 사용자 가시적 이름이 없음 basic_format_string 이름이 노출됨