Skip to content

Add more usages for fmt::ostream #2354

@iwubcode

Description

@iwubcode

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!

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions