diff --git a/format.h b/format.h index e6e892ad..eac6744c 100644 --- a/format.h +++ b/format.h @@ -380,6 +380,8 @@ class ArgInserter { return Proxy(f); } + std::string str() const { return Format()->str(); } + // Performs formatting and returns a C string with the output. friend const char *c_str(Proxy p) { return Format(p)->c_str(); diff --git a/format_test.cc b/format_test.cc index 3f6d456b..a3d489cc 100644 --- a/format_test.cc +++ b/format_test.cc @@ -789,6 +789,17 @@ TEST(TempFormatterTest, Example) { ReportError("File not found: {0}") << path; } +template +std::string str(const T &value) { + return (fmt::Format("{0}") << value).str(); +} + +TEST(StrTest, Convert) { + EXPECT_EQ("42", str(42)); + std::string s = str(Date(2012, 12, 9)); + EXPECT_EQ("2012-12-9", s); +} + int main(int argc, char **argv) { #ifdef _WIN32 // Disable message boxes on assertion failures.