问题标签 [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 回答
1664 浏览

c++ - 为 {fmt} 构建命名参数的动态列表

我正在使用{fmt} 库,需要构建一个动态参数列表。基本上,我有一个类似于文档页面的格式字符串

但是参数列表(包括有多少个参数)仅在运行时才知道。我看过fmt::ArgListwhich 需要一个fmt::Arg实例列表。但是命名参数是一个内部类fmt::internal::NamedArg,我看不到如何传递给列表。

有任何想法吗?

0 投票
2 回答
515 浏览

c++ - 将 initializer_list 转换为可变参数模板

我使用了一个名为 fmt ( http://fmtlib.net/latest/ ) 的格式化库。

一种可能的用途是:

我想将此调用包装在一个我称之为的函数中:

对于任意数量的参数。

到目前为止,我只成功地使用了对列表执行了一个可调用的函数:

具有以下功能:

但我不想使用对。

我应该怎么办 ?

PS:fmt::arg不能在函数之间传递。

0 投票
6 回答
21403 浏览

c++ - C++ 字符串格式,如 Python "{}".format

我正在寻找一种快速而简洁的方法来打印一个漂亮的表格格式,并且单元格被正确对齐。

c++ 中是否有一种方便的方法来创建具有一定长度的子字符串,如 python 格式

0 投票
1 回答
297 浏览

c++ - 此代码中 * 1233 >> 12 背后的数学是什么?

我有点困惑C++ {fmt} 库中的这个简短函数是如何工作的。

我理解你可以近似log10使用的逻辑,log2(__builtin_clz)你需要调整精确值,但乘法对我来说是个谜。

0 投票
3 回答
2711 浏览

c++ - 如何将非可变参数值传递给 fmt::format?

我正在使用伟大的fmt C++ 库来更优雅地格式化字符串。

我想将一个非变量参数列表传递给fmt::format. 它可以是std::vector, 或std::string, 或其他任何东西,但它始终与格式字符串匹配。

所以fmt::format像:

但我想要的是:

有没有办法/解决方法这样做?

0 投票
1 回答
3003 浏览

cmake - Issue on using {fmt} as a dependency with CMake

I'm trying to apply modern CMake practices in my project. And I've came up with an issue with the {fmt} library dependency.

The structure of a project is the following (in a brief):

When I try to build it I receive an error:

Full reproduction can be found here: https://bitbucket.org/ngrodzitski/cmake-issue-fmt-20180410

Any suggestions on the issue?

0 投票
1 回答
100 浏览

c++ - {fmt} 中基于特征的自定义点和 ODR 违规问题

首先,我目前正在为我的论文学习 C++,因此对这门语言缺乏经验。任何帮助表示赞赏。

我在我的代码中使用 fmt 库,并且可以格式化用户提供的类型的规范方式是通过专门化类模板类型fmt::formatter

例子

编译器资源管理器中的代码:https ://godbolt.org/z/2VO_wa

给定两个库Aand B,它们都碰巧在其实现中大量使用 fmt 并且都以某种方式需要打印/记录当前时间。两者都可以合理地使用std::chrono::system_clock,并且希望在几个点上对其进行格式化,每个人都定义了自己的版本,fmt::formatter<std::chrono::system_clock::time_point>以使这个简单的代码成为可能:

LibraryA使用与 不同的实现B,因为它考虑了本地时区而不是在 UTC 中打印。

现在这个例子非常具体,但由于类模板fmt::formatter是格式化用户提供的类型的方法,这种情况可能会以一种或另一种形式发生。

问题

当我开发我的应用程序C并使用两个(不相关的)库时AB我相信会有两个相同类型(即fmt::formatter<std::chrono::system_clock::time_point>)的不同实现,从而违反未定义行为的 ODR。

问题

假设我正确理解了情况,我的两个问题是:

  1. C有没有办法在不改变AB上游的情况下避免应用程序中的这种冲突?
  2. 如果可以修改其中一个AB(或两者),可以通过什么方式解决或完全防止冲突。
0 投票
1 回答
2484 浏览

c++ - spdlog 错误:“不知道如何格式化类型,包括 fmt/ostream.h 如果它提供了应该使用的 operator<<”

我刚刚拿起 spdlog 以改进我们的日志记录。我们的日志记录非常基础,所以我只是几乎逐字复制“多接收器”示例以记录到文件和控制台。

但是,即使完全按照示例进行操作,我也会得到:

错误 C2338 不知道如何格式化类型,包括 fmt/ostream.h 如果它提供了应该使用的 operator<< Logger d:\tfs\development\bladed\main\external\spdlog\spdlog-1.x \include\spdlog\fmt\bundled\core.h 351

来自core.h:

我想这很容易解决,但我看不到它......

【Win32基本使用】

0 投票
1 回答
3520 浏览

c++ - 为什么用brew安装fmt和gcc编译器后找不到fmt库?

我使用的是 MACOS Mojave 版本 10.14.3,需要使用 GNU 编译器而不是 clang。

我使用brew install gcc. 然后我使用brew install fmt.

我放在#include <fmt/format.h>我的 C++ 脚本的顶部

然后我输入:

但是我收到此错误:

当我尝试使用 boost 库时也会发生同样的情况。

当我使用clang时,发现fmt和boost没有问题。

以防万一我为 C/C++ 开发人员使用 Eclipse IDE。版本:2018-12 (4.10.0)。

具体来说,我怎样才能让 fmt 库与我用 brew 安装的 gcc 一起工作?

我在 /usr/local/Cellar 的 Mac 中拥有的是:

我在 /usr/local/Cellar 的 Mac 中拥有的是:

感谢高级版的帮助

0 投票
1 回答
5395 浏览

c++ - 如何使用 fmt 库格式化指针?

我正在接受一些人的建议并查看 fmt 库: http: //fmtlib.net

它似乎具有我需要的功能,并声称支持%p(指针),但是在编译使用 %p 的代码时,我得到一长串模板错误(难以理解)。我会在这结束时发布它们。

如果我拉出%p和相应的指针参数,那么它会在 VS2017 c++17 上编译。

但是,我不知道如何解码模板错误,或者了解为什么它首先不接受%p参数。

我已经尝试将论点转换为(void*)相同的问题。
我尝试在格式化程序中使用 python 样式语法{}- 同样的问题。
我已经将 %p 位与其他格式分开 - 同样的问题。

我看到支持用户类型 - 但在这种情况下,我只想将其输出为原始指针值。我可以跳过它,毕竟指针地址有多大价值,真的吗?但这当然意味着在从sprintfto转换过程中需要做更多的工作fmt::format来追捕所有 %p 并“对它们做一些事情”,例如忽略它们。

但文档似乎表明支持 %p - http://fmtlib.net/latest/syntax.html(大约 3/4 的方式 - 搜索“指针”或“p”)。

这是调用函数:(注意:pAccels被声明为const ACCEL *

以下是诊断结果: