std:: formatted_size
|
헤더에 정의됨
<format>
|
||
|
template
<
class
...
Args
>
std:: size_t formatted_size ( std:: format_string < Args... > fmt, Args && ... args ) ; |
(1) | (C++20부터) |
|
template
<
class
...
Args
>
std:: size_t formatted_size ( std:: wformat_string < Args... > fmt, Args && ... args ) ; |
(2) | (C++20부터) |
|
template
<
class
...
Args
>
std::
size_t
formatted_size
(
const
std::
locale
&
loc,
|
(3) | (C++20부터) |
|
template
<
class
...
Args
>
std::
size_t
formatted_size
(
const
std::
locale
&
loc,
|
(4) | (C++20부터) |
형식 문자열 fmt 에 따라 args 를 포매팅하여 형식화된 문자열의 총 문자 수를 결정합니다. loc 이 존재할 경우, 로케일별 포매팅에 사용됩니다.
다음의 경우 동작은 정의되지 않습니다:
std::
formatter
<
std::
remove_cvref_t
<
Ti
>
, CharT
>
가
BasicFormatter
요구사항을 만족하지 않는 경우, 여기서
Ti
는
Args
내의 임의의 타입입니다.
목차 |
매개변수
| fmt | - |
포맷 문자열을 나타내는 객체. 포맷 문자열은 다음으로 구성됩니다:
각 치환 필드는 다음 형식을 가집니다:
1)
포맷 명세 없음 치환 필드
2)
포맷 명세 포함 치환 필드
|
||||||||||||||||||||||||||||||||||||||||||||||
| args... | - | 포맷팅될 인자들 | ||||||||||||||||||||||||||||||||||||||||||||||
| loc | - | std::locale 로케일 특정 포맷팅에 사용됨 | ||||||||||||||||||||||||||||||||||||||||||||||
반환값
서식이 지정된 문자열의 총 문자 수입니다.
예외
formatter에 의해 발생된 모든 예외를 전파합니다.
예제
#include <format> #include <iomanip> #include <iostream> #include <string_view> #include <vector> int main() { using namespace std::literals::string_view_literals; constexpr auto fmt_str{"Hubble's H{0} {1} {2:*^4} miles/sec/mpc."sv}; constexpr auto sub_zero{"\N{SUBSCRIPT ZERO}"sv}; // "₀" or {0342, 130, 128} constexpr auto aprox_equ{"\N{APPROXIMATELY EQUAL TO}"sv}; // "≅" or {0342, 137, 133} constexpr int Ho{42}; // H₀ const auto min_buffer_size{std::formatted_size(fmt_str, sub_zero, aprox_equ, Ho)}; std::cout << "Min buffer size = " << min_buffer_size << '\n'; // Use std::vector as dynamic buffer. The buffer does not include the trailing '\0'. std::vector<char> buffer(min_buffer_size); std::format_to_n(buffer.data(), buffer.size(), fmt_str, sub_zero, aprox_equ, Ho); std::cout << "Buffer: " << std::quoted(std::string_view{buffer.data(), min_buffer_size}) << '\n'; // Print the buffer directly after adding the trailing '\0'. buffer.push_back('\0'); std::cout << "Buffer: " << std::quoted(buffer.data()) << '\n'; }
출력:
Min buffer size = 37 Buffer: "Hubble's H₀ ≅ *42* miles/sec/mpc." Buffer: "Hubble's H₀ ≅ *42* miles/sec/mpc."
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| P2216R3 | C++20 | 잘못된 형식 문자열에 대해 std::format_error 를 발생시킴 | 잘못된 형식 문자열은 컴파일 타임 오류를 발생시킴 |
| P2418R2 | C++20 |
const-usable도 복사 가능하지도 않은 객체
(예: 생성기형 객체)는 포맷팅 불가능 |
이러한 객체의 포맷팅 허용 |
| P2508R1 | C++20 | 이 기능에 대한 사용자 가시적 이름이 없음 |
basic_format_string
이름이 노출됨
|
참고 항목
|
(C++20)
|
출력 반복자를 통해 인수의 형식화된 표현을 기록합니다
(함수 템플릿) |
|
(C++20)
|
출력 반복자를 통해 인수의 형식화된 표현을 기록하며, 지정된 크기를 초과하지 않음
(함수 템플릿) |