Документация для std :: basic_filebuf :: seekpos - PullRequest
0 голосов
/ 28 ноября 2018

Я изучил страницу документации для std :: basic_filebuf :: seekpos, предоставленной cppreference.com , и запутался в следующем предложении:

Если файл открыт длячтение, обновляет область get, если это необходимо.

Насколько я могу видеть на моем компьютере, seekpos заканчивается eback () == gptr () == egptr (), т.е. функция empties getплощадь.Значит ли это, что область get была обновлена?Было бы очень хорошо, если бы кто-то мог это прояснить.Спасибо!

1 Ответ

0 голосов
/ 28 ноября 2018

Далее вниз по странице:

Многие реализации не обновляют область get в seekpos (), делегируя функцию underflow (), которая вызывается следующей sgetc ()

и:

в некоторых реализациях область get очищается с помощью seekpos (), а второй underflow () необходим для наблюдения за эффектами

Looksкак будто это то, что случилось с вами.

Он открыт для толкования того, что означает «обновление».Стандарт здесь очень гибок (обратите внимание на отсутствие явных постусловий), в основном говоря, что «реализация выполняет все, что ей нужно для осуществления своего бизнеса».

В этом конкретном случае ваш filebufреализация, вероятно, освободила область get, когда вы искали, а затем «заполнит» ее в следующем underflow () - возможно, обе согласованные операции являются «обновлением», но, если честно, вы можете вращать ее любым удобным вам способом.

...