问题标签 [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.
c++ - fmt std::string 显示为数字
我试图格式化一个将显示在控制台中的简单字符串
其中 m_Info 是 std::string,duration 是 long long,ms 是 double。结果如下所示:
-9891888000000.0 => Duration: 49172 micro, 412316861 ms
std::string 显示为随机数,ms 应该是 49,172。
我试过了
"{:s} => Duration: {:d} micro, {:f} ms"
但这导致了fmt::format_errror
。我在同一个项目的其他文件中使用了相同的库,并且没有收到此类错误。
编辑
我在同一部分代码中使用了其他一些 fmt 函数
在所有这些中std::string
,double
都显示为一些随机数。最后一个函数std::string
正确打印了未格式化的内容,当我尝试使用long long
and时也发生了同样的情况double
。
c++ - 在 C++ 中使用 FMT 进行字符串插值的链接器错误
我正在尝试在 C++ 中使用FTM进行字符串插值,但是当我尝试编译时它给了我一些链接器错误。
我写了以下课程:
在我的主要中使用这个类会导致一些 LNK2001 和 LNK2019 错误。这是其中的一个小样本: 我猜这是由于对库的不正确使用。我是否缺少一些应该设置的全局变量?
c++ - {fmt} 等价于 cout.rdbuf?
我有一个单元测试,它通过读取函数发送的缓冲区来验证函数:
和:
有没有办法捕获fmt::print
去生成的输出stdout
?
当我注释掉cout
代码并取消注释fmt
代码时,我得到了以前的cout <<
.
c++ - 转换向量用 fmt 库串起来
如何从输出中删除 {}?
如何在上述代码的输出中删除'{'和'}'并且只打印:1、2、3
c++ - 我不能在 C++ 上使用 fmt 库头文件
我已经在 c++ 上下载、构建并添加了 {fmt} 6.2.1 库到项目中。我正在使用 Windows。
问题是,标题被识别(代码:块给我他们的自动完成)但是我尝试使用的任何功能都会导致错误。
例如这段代码:
产生此错误
编译器将我指向 core.h 的这一部分,在第二行
这是我第一次使用库,所以我在添加它时可能会弄错一些东西。我遵循的过程是继续项目-> 构建选项-> 链接器设置,然后我添加了 .lib 文件。
谢谢你。
c++ - 如何用前导零和四舍五入的小数格式化双精度
有没有一种优雅的方法将双精度格式化为小数点前具有固定位数的字符串(用前导零填充),但仅显示小数并具有最大精度?
例如,小数点前固定 3 位,小数点后最多 2 位:
附加约束:
- 小数需要实际四舍五入,而不是用空格填充
- 负数不是问题,在此之前它们会被过滤掉
- 输入在 [0.0, 180.0] 范围内
我们研究了 printf、stringstream、boost::format 和fmtlib,但它们似乎都没有对小数点前的位数提供特定的控制。控制这一点的标准方法是调整字段宽度和精度,但这似乎并不能提供我们需要的粒度。
到目前为止,我们发现的最“优雅”的解决方案如下(123.1f
输入值在哪里):
但我不禁想到必须有一个更优雅/更强大的解决方案。
对于上下文,我们有一个显示纬度/经度坐标的 GUI。我们的客户要求我们用前导零填充,但尽可能减少数字。这是在减少不必要信息和尽可能防止混淆之间的一种折衷。例如:
c++ - 用户定义类型的 std::format?
在 C++20 中-如何使用户定义的类型兼容std::format
?
例如,假设我有一个名为Point
:
其operator<<
定义:
那么下面的程序会输出Hello [3, 4]!
吗?
如果是 - 为什么以及如何?
如果不是 - 我必须在 to 的定义中添加什么才能Point
使其工作?
c++ - 使用 C++20 fmt 限制结果的总大小
我知道我可以限制特定字符串参数的大小,但是 IDK 如何为整个输出做到这一点。换句话说,这个程序可以只调用一次格式化来编写吗?
c++ - 强制 format_to_n 使用终止零
除了最常见的(格式)函数外,C++20 还附带了 format_to_n,它接受输出迭代器和计数。
我正在寻找的是确保万一我的空间用完我的字符串仍然为零终止的方法。例如,我希望以下程序输出 4 而不是 42。
如果我不手动比较我提供给函数的写入字符数和最大长度,这是否可能?
如果您想知道为什么我使用 '\0' 作为参数:
我不知道如何将终止字符放入格式字符串中。
注意:我知道对于一个参数,我可以用 : 指定 max len。但我想要一个适用于多个参数的解决方案。
drake - 可以把 drake 自带的 fmt 库做成私有的吗?
我的工作区是一个类似 ros2 的工作区,其中 drake 已被包装到 CMake 包中。
drake
fmt
正在拉入我可以使用的特定版本的库。但问题是我需要使用fmt
我系统中安装的另一个版本,我想知道是否有一种方法可以使该fmt
库成为drake
私有而不是公开它。