C++ 自定义流缓冲区能否在程序退出和请求输入时自动刷新?
提供。从cin::cin读取或应用程序存在时,如何将类更改为自动刷新?例如: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是合
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();