fstream的get,write使用同一个指针吗?

来源:百度知道 编辑:UC知道 时间:2024/06/17 13:23:55
fstream的get,write使用同一个指针吗?
还是get使用自己的指针,通过seekg来操作;同时put使用自己的指针,通过seekp来操作
seekg和seekp操作的是同一个指针吗?

首先明确以下的继承关系:
fstream继承于basic_fstream,
basic_fstream继承于basic_iostream,
basic_iostream继承于basic_ostream和basic_istream,
basic_istream和basic_ostream继承于basic_ios,
basic_ios继承于ios_base。

get被声明于basic_istream内,而put则被声明于basic_ostream内。
get和put的代码中,都调用了在 basic_ios中声明的rdbuf()。
seekg和seekp则分别(注意,不是同时)被声明在basic_istream和basic_ostream内。

由继承关系可以看出,无论是get还是put,是seekp还是seekg,都是对basic_streambuf进行操作,返回类型都是相应流的引用。
不能说他们是公用一个指针来操作,因为其内部实现没有用到可以访问的指针,但是可以肯定的是,两者是关联的,使用seekg将影响到seekp的位置(注意用词,是位置,而不是指针)。