【问题标题】: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) ?
  • 有道理,谢谢:)

标签: c++ fmt


【解决方案1】:

fmt::format string syntax 允许指定填充字符。您可以打印一个空字符串并将填充字符指定给制表符,然后“调节”打印多少个制表符。

int count = 10;
fmt::format("{:\t>{}}", "", count);

【讨论】:

  • 请注意,“填充”字符必须是单个字符,而不是字符串。并且该字段不接受动态替换字段。所以,如果你想使用“XY”作为填充前缀,这是行不通的。但是像“两个空格”这样的事情可以通过使用单个空格字符并将计数参数加倍来完成。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-05
  • 2014-04-12
  • 2011-05-17
  • 2015-09-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多