C++ 自定义流缓冲区能否在程序退出和请求输入时自动刷新?

C++ 自定义流缓冲区能否在程序退出和请求输入时自动刷新?,c++,iostream,C++,Iostream,提供。从cin::cin读取或应用程序存在时,如何将类更改为自动刷新?例如: int main () { MyStream myStream(std::cout); myStream << "This does not print."; } int main() { MyStream MyStream(std::cout); myStream 构造函数被设计为在对象创建时进行操作,因此在MyStream:std::cin.tie(this)的构造函数中建立tie是合

提供。从cin::cin读取或应用程序存在时,如何将类更改为自动刷新?例如:

int main ()
{
    MyStream myStream(std::cout);
    myStream << "This does not print.";
}
int main()
{
MyStream MyStream(std::cout);
myStream
  • 构造函数被设计为在对象创建时进行操作,因此在
    MyStream
    std::cin.tie(this)的构造函数中建立tie是合适的
    。这可能会打破
    cin
    cout
    之间以及。或者
    cin
    和流类的另一个实例之间存在的任何联系
  • 在程序出口中,C++具有静态存储对象的析构函数。
    在流的构造函数中调用
    cin.tie(this)
    。请记住,这将破坏
    cin
    cout
    之间的关系。要在程序退出时执行操作,请使用带析构函数的静态对象。@n.m.谢谢。将其以答案的形式放置,我会将其标记为已回答。:)有趣的是,cin.get()仍然刷新cout&MyStream。如果我
    MyStream
    
    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;
    
        MyStream myStream(std::cout);
        std::cin.tie(&myStream);
        myStream << "This will now print.";
        std::cin.get();