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 格式动态重复参数的主要内容,如果未能解决你的问题,请参考以下文章

为 fmt 构建命名参数的动态列表

如何将非可变参数值传递给 fmt::format?

C++ Primer 5th笔记(chap 17 标准库特殊设施)regex_replace

go语言学习笔记 — 基础 — 基本数据类型 — 字符串:字符串格式化输出

Golang IO 操作

请帮助我理解这个带有参数的 C++ 参数声明