Namespaces
Variants

std::basic_filebuf<CharT,Traits>:: close

From cppreference.net
std:: basic_filebuf < CharT, Traits > * close ( ) ;

Если существует область вывода (например, файл был открыт для записи), сначала вызывается overflow ( Traits :: eof ( ) ) для записи всех ожидающих выходных данных в файл, включая любые последовательности unshift.

Если последней вызванной функцией из underflow() , overflow() , seekpos() и seekoff() была overflow() , то вызывается std::codecvt::unshift() , возможно несколько раз, для определения последовательности unshift в соответствии с установленной локалью, и записывает эту последовательность в файл с помощью overflow ( Traits :: eof ( ) ) .

Затем закрывает файл, как если бы был вызван std::fclose() , независимо от того, завершились ли успехом или неудачей любые из предыдущих вызовов.

Если любой из вызовов функций, включая вызов std::fclose() , завершается неудачей, возвращает нулевой указатель. Если любой из вызовов функций генерирует исключение, исключение перехватывается и повторно выбрасывается после закрытия файла. Если файл уже закрыт, немедленно возвращает нулевой указатель.

В любом случае обновляет приватную переменную-член, к которой осуществляется доступ через is_open() .

Содержание

Параметры

(нет)

Возвращаемое значение

this при успехе, нулевой указатель при неудаче.

Примечания

close() обычно вызывается через деструктор std::basic_filebuf (который, в свою очередь, обычно вызывается деструктором std::basic_fstream ).

Пример

Отчёты о дефектах

Следующие отчеты об изменениях в поведении, содержащие описания дефектов, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Applied to Behavior as published Correct behavior
LWG 443 C++98 the file was written using overflow ( EOF ) changed to overflow ( Traits :: eof ( ) )
LWG 622 C++98 it was unclear how to handle the
exception thrown during closing
it is rethrown after closing the file

Смотрите также

проверяет, открыт ли связанный файл
(публичная функция-член)
уничтожает объект basic_filebuf и закрывает файл, если он открыт
(виртуальная публичная функция-член)