Difference between revisions of "cpp/utility/format/format to n"
(The standard SI unit should be used for the Hubble's constant.) |
m (match code and output) |
||
Line 78: | Line 78: | ||
const auto result = | const auto result = | ||
std::format_to_n(buffer, std::size(buffer), | std::format_to_n(buffer, std::size(buffer), | ||
− | "Hubble's H{0} {1} {2} | + | "Hubble's H{0} {1} {2} km/sec/mpc.", |
− | "\u2080", "\u2245", | + | "\u2080", "\u2245", 71); |
std::cout << "Buffer: \"" << std::string_view{buffer, result.size} << "\"\n" | std::cout << "Buffer: \"" << std::string_view{buffer, result.size} << "\"\n" |
Revision as of 11:10, 17 December 2020
Defined in header <format>
|
||
template<class OutputIt, class... Args> std::format_to_n_result<OutputIt> |
(1) | (since C++20) |
template<class OutputIt, class... Args> std::format_to_n_result<OutputIt> |
(2) | (since C++20) |
template<class OutputIt, class... Args> std::format_to_n_result<OutputIt> |
(3) | (since C++20) |
template<class OutputIt, class... Args> std::format_to_n_result<OutputIt> |
(4) | (since C++20) |
template<class OutputIt> struct format_to_n_result { |
(5) | (since C++20) |
Format args
according to the format string fmt
, and write the result to the output iterator out
. At most n
characters are written. If present, loc
is used for locale-specific formatting.
Let CharT
be decltype(fmt)::char_type (char
for overloads (1,3), wchar_t
for overloads (2,4)).
These overloads participate in overload resolution only if
OutputIt
satisfies the concept std::output_iterator<const CharT&>
.
The behavior is undefined if OutputIt
does not model (meet the semantic requirements of) the the concept std::output_iterator<const CharT&>
, or if std::formatter<Ti, CharT> does not meet the Formatter requirements for any Ti
in Args
.
std::format_to_n_result
has no base classes, or members other than out
, size
and implicitly declared special member functions.Contents |
Parameters
out | - | iterator to the output buffer | ||||||||||||||||||||||||||||||||||||||||||||||
n | - | maximum number of characters to be written to the buffer | ||||||||||||||||||||||||||||||||||||||||||||||
fmt | - | string view representing the format string.
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
A format_to_n_result
such that the out
member is an iterator past the end of the output range, and the size
member is the total (not truncated) output size.
Exceptions
Throws std::format_error if fmt
is not a valid format string for the provided arguments. Also propagates any exception thrown by formatter or iterator operations.
Example
#include <format> #include <string_view> #include <iostream> int main() { char buffer[64]; const auto result = std::format_to_n(buffer, std::size(buffer), "Hubble's H{0} {1} {2} km/sec/mpc.", "\u2080", "\u2245", 71); std::cout << "Buffer: \"" << std::string_view{buffer, result.size} << "\"\n" << "Buffer size = " << std::size(buffer) << '\n' << "Untruncated output size = " << result.size << '\n'; }
Output:
Buffer: "Hubble's H₀ ≅ 71 km/sec/mpc." Buffer size = 64 Untruncated output size = 35
See also
(C++20) |
stores formatted representation of the arguments in a new string (function template) |
(C++20) |
writes out formatted representation of its arguments through an output iterator (function template) |
(C++20) |
determines the number of characters necessary to store the formatted representation of its arguments (function template) |