std::vformat

来自cppreference.com
< cpp‎ | utility‎ | format
 
 
 
 
在标头 <format> 定义
(1) (C++20 起)
(2) (C++20 起)
std::string vformat(conststd::locale& loc,
                     std::string_view fmt, std::format_args args );
(3) (C++20 起)
std::wstring vformat(conststd::locale& loc,
                      std::wstring_view fmt, std::wformat_args args );
(4) (C++20 起)

按照格式字符串 fmt 格式化 args 所持有的实参,并返回作为字符串的结果。loc 若存在,则用于本地环境特定的格式化。

目录

[编辑]参数

fmt - 用于表示格式字符串的对象。格式字符串由以下组成
  • 通常字符(除了 {}),它们被不加修改地复制到输出,
  • 转义序列 {{}} ,它们在输出中被分别替换成 {} ,以及
  • 替换域。

每个替换域拥有如下格式:

{实参索引 (可选)} (1)
{实参索引 (可选):格式说明} (2)
1) 没有格式说明的替换域
2) 有格式说明的替换域
实参索引 - 指定用于格式化它的值的 args 中的参数的下标;如果省略实参索引,那么按顺序使用参数。

格式字符串中的实参索引 必须全部存在或全部被省略。混合手动和自动指定下标是错误。

格式说明 - 格式说明由对应参数特化的 std::formatter 定义。不能以 } 开始。

(C++23 起)
(C++26 起)
  • 对于其他可格式化类型,格式说明由用户定义的 std::formatter 特化决定。
args... - 要格式化的实参
loc - 用于本地环境特定格式化的 std::locale

[编辑]返回值

保有格式化结果的字符串对象。

[编辑]异常

fmt 对于提供的实参不是合法的格式字符串则抛出 std::format_error,在分配失败时抛出 std::bad_alloc。并传播格式化器或迭代器操作所抛的任何异常。

[编辑]示例

#include <format>#include <iostream>   template<typename... Args>inlinevoid println(conststd::format_string<Args...> fmt, Args&&... args){std::cout<< std::vformat(fmt.get(), std::make_format_args(args...))<<'\n';}   int main(){ println("{}{} {}{}", "Hello", ',', "C++", -1+2*3*4);}

输出:

Hello, C++23

[编辑]参阅

close