15

我只是想知道为什么在类中定义和在类中定义的成员函数tellg()basic_istream<>不同tellp()basic_ostream<>名称。那是因为basic_fstream<>源自basic_istream<>andbasic_ostream<>吗?

4

2 回答 2

8

tellg()获取指针的位置gettellp()获取指针的位置put,其中一个是您读取的位置,第二个是您在文件中写入的位置。所以这两个函数做不同的事情并返回不同的值。为什么你认为他们应该有相同的名字?

于 2013-01-25T12:51:36.113 回答
7

你会如何在双向流中区分它们,比如std::fstreamor std::stringstream?流被允许为输入和输出维护单独的指针:fstream 没有,但是stringstream有。因此,您需要一个标志来指示您想要哪一个(如 中的情况streambuf),或者您需要两个单独的函数。

于 2013-01-25T13:48:30.687 回答