Файловые буферы STL
Сбрасывается ли буфер при вызове функции seekg() у объекта класса ofstream. с помощью тестов обнаружил, что кажется всегда сбрасывается, но стоит ли ожидать такого поведения от всех реализаций STL ?
Да действительно очищает, но что значит от всех реализаций STL?:)
Ну реализации STL разные бывают =) Есть микрософтовская в студии, есть в гцц, есть своя какая-то в билдере. Ведь в стандарте описаны всего лишь какие-то требования в STL, а не конкретная реализация. Например, определение развера списка (std::list) может работать как за константное время, так и за линейное.
Представь себе ситуацию ты создал файл на запись и кинул туда 10 байт(на самом деле они скинулись не в файл а в буфер) и после пытаешься обратится к пятой позиции курсора(на пятый байт в файле), а она отсутствует файле - баг. То есть логично что метод seekg должен сначало отчистить буфер не зависимо от реализации. :D
Ага, но это твоя логика, у меня была точно такая же. Но у тех, кто писал СТЛ могла быть другая логика, причем лучше и правильнее нашей. Ладно. все. понятно. тему можно закрыть =)
будет ли коретно чтобы достучатся до какойто позиции в файле перелапачивать весь файл с учетом буффера, это дополнительное процессорное время и ресуры, что не есть хорошо?...;)
STL - стандарт, он один для всех. Для этого его и создали. Иди от первоисточника - читай сам стандарт по этой функции.
Я задался бы вопросом: зачем требовать от функции seekg() обязательного сброса буферов. Для какого алгоритма это требование обязательно? Может лучше точнее его сформулировать и перестроить так, чтобы это не было критично?
В том-то и дело, что в стандарте именно про это ничего не написано
Если в стандарте не написано, то нужно делать, как написано, flush()
Я всетаки поставил 6.0 тк охота за АПИ посидеть,знаний всяческих дает много)
ты думаеш в 7 или 8 нету апи???? ЛОЛ