0

Loki Asari、このカスタム スチーム バッファーを提供します。cin::cin から読み取るとき、またはアプリケーションが存在するときに、クラスを自動的にフラッシュするように変更するにはどうすればよいですか? 例えば:

int main ()
{
    MyStream myStream(std::cout);
    myStream << "This does not print.";
}

int main()
{
    MyStream myStream(std::cout);
    myStream << "This does not print.";
    std::cin.get();
}

一方

std::cout << "This does print.";

std::cout << "This does print.";
std::cin.get();

強行したら

myStream << "This will now print." << std::flush;

ただし、プログラムの終了時または std::cin でトリガーする cout の動作を自動的に複製したいと考えています。

これは機能します (Josuttis の「The C++ Standard Library」のおかげです):

    MyStream myStream(std::cout);
    std::cin.tie(&myStream);
    myStream << "This will now print.";
    std::cin.get();

std::cint.tie(&std::cout)は事前定義された接続であるためです。

質問 #1std::cin.tie(&myStream) :インスタンスを作成するたびにa を発行する必要がないように、MyStream クラスを変更して cin ストリームに関連付けることはできますか?

質問 #2 : プログラムの終了時にバッファが自動的にフラッシュされるように MyStream クラスを変更するにはどうすればよいですか?

4

1 に答える 1