如何使用libmt在单个调用中混合格式化



我想打印时间中心对齐。但是我不知道如何混合参数和fmt。

std::cout << fmt::format("|{0: ^80}|n", "");
std::cout << fmt::format("|{0:%c}|n", std::chrono::system_clock::now());

这个打印:

|                                                                                |
|Fri May 13 09:24:05 2022|

我尝试了以下操作,但是程序崩溃了:

std::cout << fmt::format("|{0:%c{:^ 80}}|n", std::chrono::system_clock::now());

如何打印日期字符串居中对齐?

我找到的解决方案是传递另一种格式:

std::cout << fmt::format("|{0: ^80}|n",
fmt::format("{0:%c}", std::chrono::system_clock::now()));

但这看起来不太好?我认为应该有一种方法可以用一种格式来完成它?

From https://fmt.dev/latest/syntax.html:

chrono_format_spec ::=  [[fill]align][width]["." precision][chrono_specs]

:

fmt::format("|{0: ^80%c}|n", ....

最新更新