可以在任何输入流与输出流之间建立链接。从而提供一种“一旦访问就刷新输出”的行为。换句话说,从输入流请求数据时,与其链接的输出流会自动刷新输出。这个行为可以用于所有的流,但是对于可能相互依赖的文件流尤其有用。
流链接用方法tie()来实现。要把输出流绑定到一个输入流上,可以在输入流上调用tie(),并把输出流的地址传递给它。要断开这个链接,传递NULL即可。
下面这段程序把一个文件的输出流绑到了另一个文件的输入流上。也可以把它绑定到同一个文件的输入流上,不过要同时读写一个文件,双向I/O可能更好。
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
int main()
{
ifstream inFile(“input.txt”);
ofstream outFile(“output.txt”);
inFile.tie(&outFile);
outFile<<”Hello there!”;
string text;
inFile>>text;
return 0;
}
方法flush()是在ostream基类上定义的,所以也可以把一个输出流绑定到另一个输出流上。
outFile.tie(&antherOutFile);
这种关系表示,每次向一个文件写数据时,就会向另一个文件写入已经发送的缓冲数据。可以使用这种机制保持二个相关文件之间的同步。