3

在我的 C++17 项目中,我有一个已知包含 UTF-8 编码数据的 std::string。有什么方法可以强制 fmt 将其数据视为 UTF-8 以使其按预期工作?

fmt::print("{:-^11}", "あいう");
// should print "----あいう----", currently prints "-あいう-"
4

2 回答 2

2

{fmt} 中的 UTF-8 处理最近得到了改进,您的示例现在可以与master分支一起使用:

#include <fmt/core.h>

int main() {
  fmt::print("{:-^11}", "あいう");
}

印刷

----あいう----
于 2020-03-10T13:40:14.253 回答
0

将字段宽度作为下一个参数传递并自己计算:

#include <fmt/format.h>
#include <cstring>
int main() {
    fmt::print("{:-^{}}", "あいう", 8 + std::strlen("あいう"));
}
于 2020-03-09T13:08:51.023 回答