我的程序中有以下代码。IoFile.out 有几行。
int main()
{
ifstream inFile("Iofile.out", ios::in|ios::out);
ostream outStream(inFile.rdbuf());
cout << "tellp outStream " << outStream.tellp() << endl; // tellp outStream 0
cout << "tellg inFile " << inFile.tellg() << endl; // tellg inFile 0
cout << inFile.rdbuf(); // Print whole file
cout << "tellp outStream " << outStream.tellp() << endl; // tellp outStream 21
cout << "tellg inFile " << inFile.tellg() << endl; // tellg inFile 21
return 0;
}
tellp 和 tellg 的输出如注释中所示。我的查询是当我将文件内容写入 cout 时,我希望只有 streambuf 的读取指针(即tellg)移动到文件末尾。但在这种情况下,我看到 outStream 的 put 指针也被移动到文件末尾。为什么是这样 ?为什么将文件打印到 cout 导致 outStream 的放置指针发生变化?