我有这个结构,我需要传递给
std::format
:
#include <format>
#include <iostream>
#include <sstream>
#include <string>
struct Str {
int i;
float f;
std::string s;
Str() {}
Str(int p_i, float p_f, const std::string &p_s) :
i(p_i), f(p_f), s(p_s) {}
std::string GetString() {
std::stringstream ostr;
ostr << i << " " << f << " " << s;
return ostr.str();
}
};
int main() {
std::string str;
Str obj(1, 2.3, "test");
// OK
str = std::format("Test structure (format) {} {} {}", obj.i, obj.f, obj.s);
// OK
str = std::format("Test structure (format) {}", obj.GetString());
// Compile time error
str = std::format("Test structure (format) {}", obj);
}
有没有办法将整个结构传递给
std::format
,而不必指定其所有字段,或者必须将它们转换为std::string
?
std::formatter
。这也将允许您使用自定义格式规范。