C++ fmt 格式动态重复参数
Posted
技术标签:
【中文标题】C++ fmt 格式动态重复参数【英文标题】:C++ fmt format dynamically repeat argumentC++ fmt 格式动态重复参数 【发布时间】:2019-11-18 16:04:57 【问题描述】:我需要匹配严重依赖制表符缩进的文件格式。
有没有一种惯用的方法可以使用 fmt 重复插入一个字符(在我的情况下为 \t
)给定的 n
次数?
我正在寻找类似于对齐方式的东西:
fmt::format(":>", "right aligned", 30);
// Result: " right aligned"
我想出的所有解决方案都是做作的。
【问题讨论】:
指定填充字符?":\t>"
?请发布您想要的示例输出。前任。对于"right aligned", 30
,您想输出 15 个(或类似的)制表符,后跟字符串“右对齐”?
不,它要简单得多。我基本上想设置行首之前的缩进级别(多少个制表符),我想避免写fmt::format("\t\t\t\t\t\t\t\tHello world")
。
fmt::format(":\t>", "", 15)
?
有道理,谢谢:)
【参考方案1】:
fmt::format string syntax 允许指定填充字符。您可以打印一个空字符串并将填充字符指定给制表符,然后“调节”打印多少个制表符。
int count = 10;
fmt::format(":\t>", "", count);
【讨论】:
请注意,“填充”字符必须是单个字符,而不是字符串。并且该字段不接受动态替换字段。所以,如果你想使用“XY”作为填充前缀,这是行不通的。但是像“两个空格”这样的事情可以通过使用单个空格字符并将计数参数加倍来完成。以上是关于C++ fmt 格式动态重复参数的主要内容,如果未能解决你的问题,请参考以下文章
C++ Primer 5th笔记(chap 17 标准库特殊设施)regex_replace