问题标签 [boost-format]

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 投票
1 回答
3118 浏览

c++ - 如何使用 boost::format 对变量中包含小数位数的数字进行零填充?

我想对一个数字进行零填充,使其具有 5 位数字并将其作为字符串获取。这可以通过以下方式完成:

但是,我不想硬编码位数(即“%05u”中的 5)。

如何使用 boost::format,但通过变量指定位数?

(即输入位数,unsigned int numberOfDigits = 5然后将 numberOfDigits 与 boost::format 一起使用)

0 投票
1 回答
1876 浏览

c++ - boost::format hex 中的奇怪行为

我正在尝试将二进制数组:格式化为char* memblock十六进制字符串。

当我使用以下内容时:

我得到以下输出:

当我尝试boost::format像这样在 ofstream 上使用时:

我得到一个像这样的奇怪输出(在 Vi 中看到)0x0^?:.

是什么赋予了?

0 投票
1 回答
3477 浏览

c++ - 升压格式错误

当我尝试在 cygwin 中编译时,会出现这样的问题:

致命错误:boost/format.hpp:没有这样的文件或目录#include <boost/format.hpp>

我如何解决这个问题,请有人帮助我...

0 投票
1 回答
369 浏览

c++ - 如何从多个 boost::format 创建/组合/连接 boost::format

这是给定的:

'greetingwithname' 应该组合并重用 'greeting' 和 'name' 以便它等价于:

我如何/从多个 boost:format 对象创建 boost::format 对象的最佳方法是什么?

0 投票
2 回答
1256 浏览

c++ - Boost::Format 与 char 数组

我环顾四周,一直找不到将 boost 格式返回的内容存储到 char 数组中的解决方案。例如:

我得到错误:

错误:期望一个表达式

我不知道我是否只是忽略了一个简单的解决方案,但我需要一个 const char* 作为回报。有大量代码暂时无法重写。我正在研究 VS2013 C++

0 投票
2 回答
1518 浏览

c++ - 为什么 Boost Format 和 printf 在相同的格式字符串上表现不同

Boost 格式文档说:

它的目标之一是提供 printf 的替代品,这意味着 format 可以解析为 printf 设计的格式字符串,将其应用于给定的参数,并产生与 printf 相同的结果。

当我使用相同的格式字符串比较 boost:format 和 printf 的输出时,我得到不同的输出。在线示例在这里

输出是:

升压格式: A:A:A:65

打印:65:41:A:65

不同之处在于我想将 char 显示为整数类型。

为什么有区别?这是一个错误还是想要的行为?

0 投票
1 回答
356 浏览

c++ - 仅在 windows 下 boost::format 异常

我已经在很多情况下使用了 boost::format,但是我发现了一个 Windows 实现没有像我预期的那样做出反应,因为它抛出了一个异常

我使用宏来定义不同平台的十六进制输出格式:

并调用格式如下:

请注意,我使用的语法与“fprintf”完美配合。

我想它来自 'uint64_t' 格式的十六进制,但是您知道以适用于所有平台的方式编写同一行吗?

0 投票
1 回答
422 浏览

c++11 - 使用可变参数馈送 boost::format

我正在尝试编写一个日志函数,它采用可变参数列表并在安全庄园中打印。
vprintf似乎是显而易见的答案,但是当格式字符串期望的参数比提供的参数多时,我似乎找不到一种安全的方法来处理。

此外,如果我可以重新排列参数的打印顺序,那就太好了。
这第二个要求导致我boost::format,这似乎正是我想要的,除了它不接受va_list输入。

我做了一些广泛的搜索,我能得到的最接近的是这个解决方案:
boost::format with variadic template arguments

不幸的是,我仅限于特定的 gcc 版本,它似乎不包括std::initializer_list

在我的搜索中,我偶然发现boost::preprocessor它似乎应该能够完成我想要的,但我正在努力实现它。

所以,理想情况下,我正在寻找的是如下工作的东西:

MagicalFunctionCall(args)会将我的参数转换为:例如
1, "Test", 3.4, "OtherString"

1 & "Test" & 3.4 & "OtherString"

我不一定与boost::preprocessor任何东西相关联boost,但在不引入任何额外的第 3 方依赖项的情况下完成此操作将是理想的(我们已经在项目的其他地方使用了 boost)。我只是推荐了这些库,因为它们似乎是完成上述所有工作的最有希望的。

谢谢!

0 投票
1 回答
264 浏览

c++ - 是什么阻止了 Boost.Format 表单使用我的流运算符重载作为可选 int?

我希望能够使用std::optional<int>Boost.Format。

上面的代码给了我以下编译器错误:

如果我只是i直接传递给std::cout.

0 投票
0 回答
55 浏览

c++ - boost 格式为看似相同的字符串产生不同的输出

背景

我正在使用boost 格式库来格式化一些文本。我的输入是一个uint8_t数组。这是我使用的代码:

问题

上面的代码产生这个输出:

oss << boost::format("%-24s%c%-10d%8s") % convertedStr % "#" % 512 % "999";给出不同的输出并省略-24并立即开始以下部分。

猜想数组的长度大于格式长度说明符可能会导致这种情况,所以我在两个格式行都改为-24了。-40这是输出:

问题

我的代码有问题吗?

如何uint8_t正确格式化从数组转换的字符串?