在 fmt 中强制对 std::string 进行 UTF-8 处理
Force UTF-8 handling for std::string in fmt
在我的 C++17 项目中,我有一个已知包含 UTF-8 编码数据的 std::string。有没有什么方法可以强制 fmt 将其数据视为 UTF-8,以便按预期工作?
fmt::print("{:-^11}", "あいう");
// should print "----あいう----", currently prints "-あいう-"
将字段宽度作为下一个参数传递并自行计算:
#include <fmt/format.h>
#include <cstring>
int main() {
fmt::print("{:-^{}}", "あいう", 8 + std::strlen("あいう"));
}
最近改进了 {fmt} 中的 UTF-8 处理,您的示例现在可以与 master
分支一起使用:
#include <fmt/core.h>
int main() {
fmt::print("{:-^11}", "あいう");
}
打印
----あいう----
在我的 C++17 项目中,我有一个已知包含 UTF-8 编码数据的 std::string。有没有什么方法可以强制 fmt 将其数据视为 UTF-8,以便按预期工作?
fmt::print("{:-^11}", "あいう");
// should print "----あいう----", currently prints "-あいう-"
将字段宽度作为下一个参数传递并自行计算:
#include <fmt/format.h>
#include <cstring>
int main() {
fmt::print("{:-^{}}", "あいう", 8 + std::strlen("あいう"));
}
最近改进了 {fmt} 中的 UTF-8 处理,您的示例现在可以与 master
分支一起使用:
#include <fmt/core.h>
int main() {
fmt::print("{:-^11}", "あいう");
}
打印
----あいう----