17
|
underspecified · 技术社区 · 16 年前 |
![]() |
1
13
我正在使用3:BoostString格式库-但我必须承认,我从来没有对格式规范的差异有过任何问题。 对我来说工作就像是一种魅力——外部依赖性可能更糟(一个非常稳定的库) 已编辑:添加如何使用boost::格式而不是printf的示例:
在boost::格式库中应该是这样的:
希望这有助于澄清boost::format的用法 我在4或5个应用程序中使用了boost::format作为sprintf/printf替换(将格式化字符串写入文件,或将自定义输出写入日志文件),并且从未遇到格式差异问题。可能有一些(或多或少有些模糊)格式说明符是不同的-但我从来没有遇到过问题。 相比之下,我有一些格式规范,我不能真正处理流(正如我记得的那样)。 |
![]() |
2
36
这是我喜欢的习惯用法,它使功能与“sprintf”相同,但返回一个std::string,并且不受缓冲区溢出问题的影响。这段代码是我正在编写的一个开源项目(BSD许可证)的一部分,所以每个人都可以随心所欲地使用它。
编辑:当我编写这段代码时,我不知道这需要C99一致性,而且Windows(以及旧的glibc)有不同的vsnprintf行为,在这种行为中,它返回-1表示失败,而不是对所需空间的确定度量。这是我修改的代码,大家都能看一下吗?如果你认为可以,我会再次编辑,使其成为唯一列出的成本:
|
![]() |
3
1
可以使用带格式的std::string和iostreams,例如setw()调用和iomanip中的其他调用。 |
![]() |
4
1
以下可能是另一种解决方案:
(
当然,您应该使用snprintf而不是sprintf来避免缓冲区溢出。您还可以有选择地将风险更大的sprintfs更改为<<格式,以更安全,但更改的次数越少越好。 |
![]() |
5
1
您应该尝试loki库的safeformat头文件( http://loki-lib.sourceforge.net/index.php?n=Idioms.Printf )它类似于Boost的字符串格式库,但保留了printf(…)函数的语法。 希望这有帮助! |
![]() |
6
0
这是关于序列化的吗?还是打印正确? 如果是前者,也要考虑boost::serialization。这都是关于对象和子对象的“递归”序列化。 |
|
MARTIN MASSOL · 在JS中将12h格式转换为24h格式 6 年前 |
![]() |
user1645514 · 根据txt文件中的给定日期定义日期格式 6 年前 |
![]() |
Simon · 如何在Go中打印浮点的二进制表示? 6 年前 |
![]() |
clink · 使用Java字符串。format()用于打印 7 年前 |
![]() |
Beardedant · 合并Rstudio中格式不同的文件 7 年前 |
![]() |
drhagen · 整数到十六进制字符串 7 年前 |
![]() |
Maryg · 在python3中打印嵌套字典 7 年前 |