问题标签 [fmt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1723 浏览

c++ - FMT C++ 库:允许用户为自定义类型设置格式说明符

我有一个自定义类型,例如

我想为这种类型设置一个自定义的 FMT 格式化程序。我执行以下操作并且有效:

但问题是,输出格式是由模板代码设置的,使用这个"{}"表达式。我想给一个用户自己定义格式字符串的机会。

例如:

我怎样才能做到这一点?

目前,当我设置自定义格式字符串时,我得到

0 投票
1 回答
1655 浏览

c++ - 使用 C++ fmtlib,有没有比使用 std::ostringstream 更简洁的方法将数据序列附加到字符串?

fmtlib 包提供了一种干净、可读且快速的方式来格式化 C++ 中的字符串数据,但我找不到一种干净且可读的方式来使用它将数据序列附加到字符串。

经过多次谷歌搜索,我想出了一个可行的解决方案,但它比使用标准流和 V 形的典型方法要冗长得多。我不能使用 fmtlib 的任何/许多示例,所以我希望那里的一些专家知道一种更简洁的方法。

我只是将一个整数数组转储到标准输出,如下所示: [0]=2 [1]=0 [2]=0 [3]=0 [4]=1 [5]=0 [6]= 0 [7]=0

0 投票
3 回答
6769 浏览

c++ - 如何使用 fmt 库而不获取“架构 x86_64 的未定义符号”

我正在尝试在我的 c++ 项目中使用 fmt ( https://github.com/fmtlib/fmt ) 格式头库。

我在主文件顶部添加了核心头文件的路径,如下所示:

#include "../third_party/fmt/core.h"

但是当我尝试调用任何函数时:

string message = fmt::format("The answer is {}", 42);

我收到以下错误:

我不确定如何使用它,因为这是我过去使用其他头库(例如 cxxopts)的方式。任何帮助,将不胜感激!

0 投票
1 回答
2419 浏览

c++ - 如何使用 fmt 库用十进制逗号格式化浮点数?

我想使用fmt库来格式化浮点数。

我尝试用小数分隔符“,”格式化浮点数,但没有成功:

输出是1.234567。我想1,234567

更新:

我浏览了 fmt 库的源代码,并认为小数点分隔符是针对浮点数进行硬编码的,并且不尊重当前的语言环境。

我刚刚在 fmt 库中打开了一个问题

0 投票
1 回答
272 浏览

c++ - 从 {fmt} 中获得最佳性能

我需要格式化一个宽字符串缓冲区的 FILETIME 值信息,并且配置提供了格式字符串。

我实际上在做什么:

  • Config 提供格式字符串:L"{YYYY}-{MM}-{DD} {hh}:{mm}:{ss}.{mmm}"

  • 将 FILETIME 转换为系统时间:

  • 格式化字符串

我完全理解服务会带来成本 :) 但我的代码会调用此语句数百万次,并且明显存在性能损失(超过 6% 的 CPU 使用率)。

欢迎我为改进此代码所做的“任何事情”。

我看到 {fmt} 有时间 API 支持。不幸的是,它似乎无法格式化时间/日期的毫秒部分,并且需要一些从FILETIMEstd::time_t...的转换工作

我应该忘记“自定义”格式字符串并为FILETIME(或SYSTEMTIME)类型提供自定义格式化程序吗?这会导致显着的性能提升吗?

我很感激你能提供的任何指导。

0 投票
1 回答
541 浏览

fmt - 使用 fmt 库格式化用户定义类型的问题

我遇到了格式化用户定义类型的问题,最终得到了这个基于 fmt 文档的简单示例。

调用foo将崩溃,因为未使用用户定义的格式化程序。而是fmt::print使用默认的字符串格式化程序并在操作符返回时崩溃nullptr。有没有办法解决这个问题?我正在使用 fmt 5.3.0

0 投票
1 回答
2303 浏览

c++ - How to get fmt::format to work with wchar_t?

I want to have fmt::format return a wstring from EA's STL, but when I try to modify this code from the docs—which works fine:

to use wchar_t instead of char:

I get:

Alternatively if I try to convert into char and then convert out, I can't get it to work for more than one argument:

I also found mention of a fmt::MemoryWriter which might help me format into a wchar_t[], but it looks like it isn't available anymore?

Not sure what else to try.

update

After looking at it with fresh eyes, I realized that I wasn't wrapping fmt_msg2—and so now I have this:

in the typedefs.h file:

in the client.cpp file:

But on Visual Studio 16.2.0 I get the following error:

0 投票
1 回答
933 浏览

c++ - 如何使用 wchar_t 为 fmt 编写格式化程序?

我想专门开发一个格式化程序模板,这样我就可以编写:

我有这个:

但我明白了:

但是,如果我在 char 上执行此操作,它会起作用,所以我尝试了:

注意模板 <> struct formatter < rect, wchar_t > 部分

但我得到:

0 投票
1 回答
736 浏览

c++ - {fmt}:编译时字符串格式检查不起作用

我正在尝试使用 fmt 5.3.0(仅标题)对编译时进行格式字符串检查。

$ g++ -I../include -std=c++11 test.cpp ...没有什么

根据 fmt 自述文件,这应该会产生错误(https://github.com/fmtlib/fmt)。

0 投票
1 回答
1126 浏览

c++ - 使用 CMake 构建 {fmt} 时出现问题

我在使用 CMake 构建 {fmt} 时遇到问题。

一个项目的结构如下:

./CMakeLists.txt如下:

./src/CMakeLists.txt如下:

./src/main.cpp如下:

当我构建它时,我收到一个错误: