void emit();
概要
格納されている文字データを、ラップされたストリームに転送する。このような転送は、同じストリームを持つ他のオブジェクトによる転送に関してアトミックである。
効果
ラップしたストリームバッファのemit()
を呼び出す。
その呼び出しがfalse
を返す場合は、setstate(ios::badbit)
を呼び出す。
戻り値
なし。
例外
投げる可能性がある。このメンバ関数は、基礎となるストリームに対する操作からの例外を処理するために使用できる。
{
osyncstream bout(cout);
bout << "Hello, " << "World!" << '\n';
try {
bout.emit();
} catch (...) {
// 例外を処理する
}
}
例
#include <iostream>
#include <syncstream>
#include <utility>
int main()
{
osyncstream bout(std::cout);
bout << "Hello," << '\n'; // フラッシュしない
bout.emit(); // 文字は転送される。std::cout はフラッシュしない
bout << "World!" << std::endl; // フラッシュしない。std::cout はフラッシュしない
bout.emit(); // 文字は転送される。std::cout はフラッシュする
bout << "Greetings." << '\n'; // フラッシュしない
} // 文字は転送される。std::cout はフラッシュしない
xxxxxxxxxx
#include <iostream>
#include <syncstream>
#include <utility>
int main()
{
osyncstream bout(std::cout);
bout << "Hello," << '\n'; // フラッシュしない
bout.emit(); // 文字は転送される。std::cout はフラッシュしない
bout << "World!" << std::endl; // フラッシュしない。std::cout はフラッシュしない
bout.emit(); // 文字は転送される。std::cout はフラッシュする
bout << "Greetings." << '\n'; // フラッシュしない
} // 文字は転送される。std::cout はフラッシュしない
出力
Hello,
World!
Greetings.
バージョン
言語
- C++20
処理系
- Clang: ??
- GCC: 11.1 ✅
- Visual C++: 2019 update 10 ✅