【发布时间】:2020-03-09 12:26:37
【问题描述】:
在我的 C++17 项目中,我有一个已知包含 UTF-8 编码数据的 std::string。有什么方法可以强制 fmt 将其数据视为 UTF-8 以使其按预期工作?
fmt::print("{:-^11}", "あいう");
// should print "----あいう----", currently prints "-あいう-"
【问题讨论】:
-
我认为您需要
std::u8string在一般级别上正确处理 utf-8,这仅在 C++20 中可用。我记得 fmt 中有一些专用于 utf-8 的特殊 API,您可以使用。 -
你知道我在哪里可以找到这个 API 吗?当我搜索它时,我看不到任何类似的东西。
-
现在只能在 {fmt} 中使用。还要不惜一切代价避免
char8_t- 它会在 C++20 中被破坏。