问题标签 [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.
c++ - 为什么 boost::format 不能直接转换为 std::string?
以下是不可能的:
您必须显式调用 str() 方法:
它只是语法糖,但为什么不添加转换呢?
c++ - 使用 boost::format 打印布尔值作为符号值?
如何使用boost::format
符号值打印布尔值?
这可以在没有 的情况下完成boost::io::group
吗?似乎预先发送到流的标志得到了重新测试:
输出
c++ - 在没有科学计数法的情况下在 C++ 中格式化 n 个有效数字
我想将浮点值格式化为 n 个有效数字,但从不使用科学记数法(即使它会更短)。
格式规范%f
不处理有效数字,%g
有时会给我科学记数法(这不适合我的使用)。
我想要表单中的值"123", "12.3", "1.23" or "0.000000123"
。
有没有一种优雅的方法可以使用C++ 或 boost做到这一点?
c++ - c++ boost format float - 如何指定我不想要的。并跟随零
我想boost::format
用来将浮点数转换为字符串。以下是预期结果的几个示例:
我目前正在使用
它主要工作,但结果0
是"0.0"
并且1.00001
是"1.0"
我想要的时候"0"
而"1"
不是。
我需要改变什么来摆脱无意义的.0
?
c++ - 使用 boost::format 的 C++ 便捷日志记录语句
我想设计一个具有以下特点的日志功能:
- 基于 std::string 而不是 char*
- 支持可变数量的变量,例如 printf
- 接受作为第一个参数的严重性级别
- 避免严重级别低于日志级别时的格式化开销
- 像 printf 一样简单,或者几乎如此
我倾向于使用 boost::format 因为它的自动类型转换。但这里有一些我看到的问题:
它的语法有点尴尬:有点难看format("Mgr %s on pid %d is in state %s" % mgr % pid % s)
(变量的列表性质没有逗号就不那么明显了)。日志调用如下所示:
更糟糕的是,是否有可能实现 mylog() 来检查我们是否在构造格式对象 之前记录了 INFO 消息?
我想到的另一种看起来更接近 printf 的方法是
甚至
实现将类似于:
这肯定会推迟格式对象的构建,直到需要它。但是据我所知,在遍历变量参数列表时,无法判断您何时到达终点!
有人可以建议一种语法上简单的技术来实现这一点吗?
注意:我有 g++ 4.4,它不支持所有的 c++11(虽然它支持可变参数模板)
c++ - Boost.Format 的编译时检查
Clang 和 GCC 都可以检查 printf 样式函数的格式字符串和参数之间的不匹配。例如,他们会抱怨这样的陈述:
Boost.Format是否存在类似的东西?换句话说,是否有任何编译器开关、静态分析工具等可以警告代码,例如
或者
c++ - C ++如何显示小数部分的确切数字
C ++(或boost lib)中有什么方法可以显示给定数字的小数部分吗?但我不想在小数部分打印尾随 0(例如1.000
, 1.500
)。看这个案例:
问题是setprecision
打印第 1 行和第 2 行的方式不同,我希望同时打印0.714
和1.714
. 并且仍然保留第 3 行和第 4 行1
和1.5
.
c++ - C++ 变量生命周期——需要临时返回的解决方法
我有一个 C++ 对象 ( boost::format
),它有一个str()
返回std::string
.
因此,当我需要一个格式化的 C 字符串时,我需要编写如下内容:
我觉得这很冗长,我非常需要它。我想创建一个派生类,它有一个operator char*
并且会像这样工作(Ch = char 或 wchar_t):
但是当然,str()
当函数返回时,返回的字符串会被释放,不会返回有效的 C 字符串。
有什么解决方法吗?
变通方法需要创建一个只要周围函数调用就存在的字符串:
c++ - C++11 等价于 Boost.Format
像 C++11 标准中的 Boost.Format 之类的东西吗?我已经能够避免使用具有更好 C++11 选项的 Boost 来满足我所拥有的所有其他需求。
就此而言,Boost.Format 与 Python 的语法并无二致format()
。像这样的东西会更好。
c++ - 带有可变模板参数的 boost::format
假设我有一个printf
使用完美转发的类似函数(用于记录):
(我没有编译这个,但我的真正功能遵循这个指南)
如何将可变参数“展开”到 boost::format 变量中f
?