You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I noticed fmt::output_file() returns a special fmt::ostream. It'd be nice if there was something similar for printing to the screen (cout stream replacement) / building into a string (ostringstream replacement).
Then we could do something like this:
void build_text(fmt::ostream& stream)
{
stream.print("Hello {}\n", "world");
stream.print('foobar");
}
// Doesn't matter how you call it!
void to_console()
{
auto stream = fmt::print(); // no argument overload? or alternative console_stream();
build_text(stream);
}
void to_file()
{
auto stream = fmt::output_file("myfile");
build_text(stream);
}
void to_string()
{
auto stream = fmt::string_stream();
build_text(stream);
// to text!
const std::string text = fmt::to_string(stream);
}
at the moment I think we have to fall back to stl streams in order to do this? But I thought those were slow in practice.
Please let me know if there's something I'm missing!
The text was updated successfully, but these errors were encountered:
I think this is good idea. It would make code more testable, because you can replace console output with string output and make assertions on that string.
I wonder how hard would be to actually implement it?
There is no update on the {fmt}-only solution but you can use std::ostream with {fmt} with the former managing buffering and low-level I/O while the latter doing the formatting.
I noticed
fmt::output_file()
returns a specialfmt::ostream
. It'd be nice if there was something similar for printing to the screen (cout
stream replacement) / building into a string (ostringstream
replacement).Then we could do something like this:
at the moment I think we have to fall back to stl streams in order to do this? But I thought those were slow in practice.
Please let me know if there's something I'm missing!
The text was updated successfully, but these errors were encountered: