Loki Astari提供了这种定制的蒸汽缓冲器。从 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 的“C++ 标准库”):
MyStream myStream(std::cout);
std::cin.tie(&myStream);
myStream << "This will now print.";
std::cin.get();
因为std::cint.tie(&std::cout)
是预定义的连接。
问题 #1:我可以修改 MyStream 类以将其绑定到 cin 流,这样我就不必在std::cin.tie(&myStream)
每次创建实例时都发出 a 吗?
问题 #2:如何修改 MyStream 类,以便在程序退出时自动刷新缓冲区?