【问题标题】:How to concatenate the format string?如何连接格式字符串?
【发布时间】:2020-06-11 07:46:03
【问题描述】:

我想连接两个字符串并将它们用作fmt 库的格式字符串。 显而易见的选择之一是将它们简单地连接为常规字符串,然后将它们传递到库中:

template<typename... Args>
inline void catfmt(std::string a, std::string b, const Args &... args) {
    std::string c = a+b;
    fmt::print(c, args...);
}

但是,c 将被丢弃。那么也许 fmt 提供了一种完全跳过它的方法?有没有办法在消息中放置一个字符串并告诉库它也应该被解析?比如:

template<typename... Args>
inline void catfmt(std::string a, std::string b, const Args &... args) {
    fmt::print("{:sf}{:sf}", a, b, args...);
}

{:sf} 的意思是:放置一个字符串并将其用作格式。

【问题讨论】:

    标签: c++ formatting fmt


    【解决方案1】:

    有没有办法在消息中放置一个字符串并告诉库它也应该被解析?

    没有这样的方法。您必须使用 operator+ 连接它,这是对格式的嵌套调用

    fmt::print(fmt::format("{}{}", a, b), args...);
    

    或其他方法。

    【讨论】:

      猜你喜欢
      • 2018-01-06
      • 1970-01-01
      • 2020-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-28
      • 2021-10-03
      • 1970-01-01
      相关资源
      最近更新 更多