从http://www.cplusplus.com/reference/ios/ios/rdbuf/:
一些派生的流类(例如stringstream和fstream)维护自己的内部流缓冲区,并在构造时与其关联。调用此函数更改关联流缓冲区对该内部流缓冲区没有影响:流将具有与其内部流缓冲区不同的关联流缓冲区(虽然流上的输入/输出操作总是使用由此成员函数返回的关联流缓冲区)。
并且在http://www.cplusplus.com/reference/fstream/ifstream/rdbuf/上:
返回指向内部filebuf对象的指针。
但是请注意,这不一定与当前关联的流缓冲区相同(由ios::rdbuf返回)。
那么如果它不用于输入和输出操作,那么内部缓冲区是用来做什么的呢?如果意味着这两行代码可以返回两个不同的对象,那么这可能有什么用处呢?
std::stringstream ss;
ss.rdbuf(); // (1) returns "internal" stream buffer?
static_cast<std::ios&>(ss).rdbuf(); // (2) returns "associated" stream buffer?
ifstream::rdbuf()
返回的并不是对象当前使用的缓冲区? - Felix Dombekios::rdbuf
的作用。 - Sam Varshavchik