std::basic_format_string, std::format_string, std::wformat_string
来自 cppreference.com
定义在头文件 <format> 中 |
||
template< class CharT, class... Args > struct basic_format_string; |
(1) | (自 C++20 起) |
template< class... Args > using format_string = |
(2) | (自 C++20 起) |
template< class... Args > using wformat_string = |
(3) | (自 C++20 起) |
类模板 std::basic_format_string
包装一个 std::basic_string_view,该视图将被格式化函数使用。
std::basic_format_string
的构造函数执行编译时格式字符串检查,除非构造函数参数由 std::runtime_format
返回(自 C++26 起).
内容 |
[编辑] 成员函数
(构造函数) |
构造一个 basic_format_string ,如果参数不是格式字符串,则会引发编译错误(公有成员函数) |
get |
返回包装的字符串 (公有成员函数) |
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) 构造一个
basic_format_string
对象,它存储字符串 s 的视图。如果参数不是编译时常量,或者如果它不能被解析为格式化参数类型 Args
的格式字符串,则构造是错误的。 此重载仅在 const T& 符合 std::convertible_to<std::basic_string_view<CharT>> 时参与重载解析。
2) 构造一个
basic_format_string
对象,它存储由 std::runtime_format 返回的字符串 s 的视图。它在构造时不执行格式字符串检查。参数
s | - | 表示格式字符串的对象。格式字符串由
每个替换字段具有以下格式
1) 没有格式规范的替换字段
2) 有格式规范的替换字段
|
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); // Calls format<double, int>. Args are deduced from 1.0, 2 // Due to the use of type_identity_t in format_string, template argument deduction // does not consider the type of the format string.
[编辑] 示例
本节内容不完整 原因:没有示例 |
[编辑] 缺陷报告
以下行为更改缺陷报告被追溯应用到先前发布的 C++ 标准。
DR | 应用于 | 已发布的行为 | 正确行为 |
---|---|---|---|
P2508R1 | C++20 | 此功能没有用户可见的名称 | 名称 basic_format_string 被公开 |