Spec-Zone.ru › C++

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

std::basic_filebuf<CharT, Traits>* close();

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

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

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

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

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

Параметры

(нет)

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

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

Примечания

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

Пример

Отчёты об ошибках

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

Отчёт об ошибке Применяется к Опубликованное поведение Правильное поведение
LWG 443 C++98 файл записывался с использованием overflow(EOF) изменено на overflow(Traits::eof())
LWG 622 C++98 не было ясно, как обрабатывать
исключение, выброшенное во время закрытия
оно повторно выбрасывается после закрытия файла

См. также

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/io/basic_filebuf/close

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API