Мне просто интересно, почему функции-члены tellg()
определяется в basic_istream<>
класс и tellp()
определяется в basic_ostream<>
класс имеют разные имена. Это потому что basic_fstream<>
происходит от basic_istream<>
а также basic_ostream<>
?
И как бы вы различали их в двунаправленных потоках,
лайк std::fstream
или же std::stringstream
? Потоки разрешены
поддерживать отдельные указатели для ввода и вывода: fstream
нет, но stringstream
делает. Так что вам нужен либо флаг, чтобы
укажите, какой вы хотите (как в случае streambuf
), или же
вам нужны две отдельные функции.
tellg()
получить положение get
указатель и tellp()
получает положение put
указатель, один из них это место, где вы читаете, а второй — где вы пишете в файл. Таким образом, две функции делают разные вещи и возвращают разные значения. Почему вы думаете, что они должны иметь одинаковое имя?