table of contents
std::range_formatter(3) | C++ Standard Libary | std::range_formatter(3) |
NAME¶
std::range_formatter - std::range_formatter
Synopsis¶
Defined in header <format>
template< class T, class CharT = char >
requires std::same_as<std::remove_cvref_t<T>, T> &&
(since C++23)
std::formattable<T, CharT>
class range_formatter;
The std::range_formatter is a helper class template for implementing
std::formatter
specializations for range types.
Member objects¶
Member name Definition
underlying_ (private) the underlying formatter of type std::formatter<T,
CharT>
(exposition-only member object*)
a string representing the separator of the range
separator_ (private) formatted result. The default separator is ",
".
(exposition-only member object*)
a string representing the opening bracket of the range
opening-bracket_ (private) formatted result. The default opening bracket is
"[".
(exposition-only member object*)
a string representing the closing bracket of the range
closing-bracket_ (private) formatted result. The default closing bracket is
"]".
(exposition-only member object*)
Member functions¶
set_separator sets a specified separator for the range formatted
result
(public member function)
sets a specified opening and closing brackets for the range formatted
set_brackets result
(public member function)
underlying returns the underlying formatter
(public member function)
parse parses the format specifier as specified by range-format-spec
(public member function)
format writes the range formatted output as specified by range-format-spec
(public member function)
std::range_formatter::set_separator
constexpr void set_separator( std::basic_string_view<CharT> sep )
noexcept;
Assigns sep to separator_.
std::range_formatter::set_brackets
constexpr void set_brackets( std::basic_string_view<CharT> opening,
std::basic_string_view<CharT> closing ) noexcept;
Assigns opening and closing to opening-bracket_ and closing-bracket_,
respectively.
std::range_formatter::underlying
constexpr std::formatter<T, CharT>& underlying(); (1)
constexpr const std::formatter<T, CharT>& underlying() const;
(2)
Returns underlying_ (the underlying formatter).
std::range_formatter::parse
template< class ParseContext >
constexpr auto parse( ParseContext& ctx ) ->
ParseContext::iterator;
Parses the format specifiers as a range-format-spec and stores the parsed
specifiers
in the current object.
Calls underlying_.parse(ctx) to parse format-spec in range-format-spec or, if
the
latter is not present, an empty format-spec.
If range-type or the n option is present, the values of opening-bracket_,
closing-bracket_, and separator_ are modified as required.
It calls underlying_.set_debug_format() if:
* the range-type is neither s nor ?s,
* underlying_.set_debug_format() is a valid expression, and
* there is no range-underlying-spec.
Returns an iterator past the end of the range-format-spec.
std::range_formatter::format
template< ranges::input_range R, class FormatContext >
requires std::formattable<ranges::range_reference_t<R>, CharT>
&&
std::same_as<std::remove_cvref_t<ranges::range_reference_t<R>>,
T>
auto format( R&& r, FormatContext& ctx ) const ->
FormatContext::iterator;
If the range-type was either s or ?s, it writes the formatted
std::basic_string<CharT>(std::from_range, r) as a string or an escaped
string,
respectively, into ctx.out().
Otherwise, it writes the following into ctx.out() as specified by
range-format-spec,
in order:
* opening-bracket_,
* for each formattable element e of the range r:
* the result of writing e via underlying_, and
* separator_, unless e is the last element of r, and
* closing-bracket_.
Returns an iterator past the end of the output range.
Defect reports
The following behavior-changing defect reports were applied retroactively to
previously published C++ standards.
DR Applied to Behavior as published Correct behavior
LWG 3892 C++23 the formatting of nested ranges was incorrect corrected
See also¶
formatter defines formatting rules for a given type
(C++20) (class template)
2024.06.10 | http://cppreference.com |