1

我想连接两个字符串并将它们用作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...);
}

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

4

1 回答 1

0

有没有办法将字符串放入消息中并告诉库它也应该被解析?

没有这样的方法。您必须使用operator+嵌套调用 format来连接它

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

或其他一些方法。

于 2020-06-11T19:32:17.417 回答