Namespaces
Variants
Views
Actions

std::basic_osyncstream::emit

From cppreference.com
void emit();

Emits all buffered output and executes any pending flushes, by calling emit() on the underlying std::basic_syncbuf.

[edit] Parameters

(none)

[edit] Example

#include <syncstream>
#include <iostream>
int main()
{
  {
    std::osyncstream bout(std::cout);
    std::bout << "Hello," << '\n'; // no flush
    std::bout.emit(); // characters transferred; cout not flushed
    std::bout << "World!" << std::endl; // flush noted; cout not flushed
    std::bout.emit(); // characters transferred; cout flushed
    std::bout << "Greetings." << '\n'; // no flush
  } // destructor calls emit(): characters transferred; cout not flushed
 
  // emit can be used for local exception-handling on the wrapped stream
  std::osyncstream bout(std::cout);
  bout << "Hello, " << "World!" << '\n';
  try {
    bout.emit();
  } catch (...) {
    // handle exceptions
  }
}

Output:

Hello,
World!
Greetings.
Hello, World!

[edit] See also

destroys the basic_osyncstream and emits its internal buffer
(public member function) [edit]
atomically transmits the entire internal buffer to the wrapped streambuf
(public member function of std::basic_syncbuf) [edit]