std::formatted_size
From cppreference.com
Defined in header <format>
|
||
template<class... Args> std::size_t formatted_size(std::string_view fmt, const Args&... args); |
(1) | (since C++20) |
template<class... Args> std::size_t formatted_size(std::wstring_view fmt, const Args&... args); |
(2) | (since C++20) |
template<class... Args> std::size_t formatted_size(const std::locale& loc, std::string_view fmt, const Args&... args); |
(3) | (since C++20) |
template<class... Args> std::size_t formatted_size(const std::locale& loc, std::wstring_view fmt, const Args&... args); |
(4) | (since C++20) |
Determine the total number of characters in the formatted string by formatting args
according to the format string fmt
. If present, loc
is used for locale-specific formatting.
The behavior is undefined if std::formatter<Ti, CharT> does not meet the Formatter requirements for each Ti
in Args
.
Contents |
Parameters
fmt | - | string view representing the format string.
an object that represents the format string. The format string consists of
Each replacement field has the following format:
1) replacement field without a format specification
2) replacement field with a format specification
| ||||||||||||||||||||||||||||||||||||||||||||||
args... | - | arguments to be formatted | ||||||||||||||||||||||||||||||||||||||||||||||
loc | - | std::locale used for locale-specific formatting |
Return value
The total number of characters in the formatted string.
Exceptions
Throws std::format_error if fmt
is not a valid format string for the provided arguments. Also propagates any exception thrown by formatter.
Example
Run this code
#include <format> #include <iostream> #include <vector> #include <string_view> int main() { constexpr std::string_view fmt_str { "Hubble's H{0} {1} {2:*^4} miles/sec/mpc.\0" }; constexpr char const* sub_zero { "\u2080" }; // "₀" constexpr char const* aprox_equ { "\u2245" }; // "≅" 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'; std::vector<char> buffer(min_buffer_size); // use std::vector as dynamic buffer std::format_to_n(buffer.data(), buffer.size(), fmt_str, sub_zero, aprox_equ, Ho); std::cout << "Buffer: \"" << buffer.data() << "\"\n"; }
Output:
Min buffer size = 37 Buffer: "Hubble's H₀ ≅ *42* miles/sec/mpc."
See also
(C++20) |
writes out formatted representation of its arguments through an output iterator (function template) |
(C++20) |
writes out formatted representation of its arguments through an output iterator, not exceeding specified size (function template) |