std::filesystem:: remove, std::filesystem:: remove_all
|
Определено в заголовочном файле
<filesystem>
|
||
|
bool
remove
(
const
std::
filesystem
::
path
&
p
)
;
|
(1) | (начиная с C++17) |
|
bool
remove
(
const
std::
filesystem
::
path
&
p,
std::
error_code
&
ec
)
noexcept
;
|
(2) | (начиная с C++17) |
|
std::
uintmax_t
remove_all
(
const
std::
filesystem
::
path
&
p
)
;
|
(3) | (начиная с C++17) |
|
std::
uintmax_t
remove_all
(
const
std::
filesystem
::
path
&
p,
std::
error_code
&
ec
)
;
|
(4) | (начиная с C++17) |
remove
. Символические ссылки не отслеживаются (удаляется сама символическая ссылка, а не её цель).
remove
. Символические ссылки не отслеживаются (удаляется сама символьная ссылка, а не её цель).
Содержание |
Параметры
| p | - | путь для удаления |
| ec | - | выходной параметр для сообщения об ошибках в непорождающей исключения перегрузке. |
Возвращаемое значение
error_code&
возвращает
false
при ошибках.
error_code&
возвращает
static_cast
<
std::
uintmax_t
>
(
-
1
)
при ошибке.
Исключения
Любая перегрузка, не помеченная
noexcept
, может выбрасывать
std::bad_alloc
при неудачном выделении памяти.
Примечания
В системах POSIX эта функция обычно вызывает
unlink
и
rmdir
по мере необходимости, тогда как в Windows
DeleteFileW
и
RemoveDirectoryW
.
Если p не существует, эта функция возвращает false и не сообщает об ошибке.
Пример
#include <cstdint> #include <filesystem> #include <fstream> #include <iostream> int main() { namespace fs = std::filesystem; std::cout << std::boolalpha; fs::path tmp{std::filesystem::temp_directory_path()}; const auto O_O{"O_O"}; std::ofstream{tmp / O_O} << O_O; // создает файл содержащий O_O std::cout << "remove(): " << fs::remove(tmp / O_O) << '\n'; // успех std::cout << "remove(): " << fs::remove(tmp / O_O) << '\n'; // неудача std::filesystem::create_directories(tmp / "abcdef/example"); const std::uintmax_t n{fs::remove_all(tmp / "abcdef")}; std::cout << "remove_all(): " << n << " files or directories\n"; }
Возможный вывод:
remove(): true remove(): false remove_all(): 2 files or directories
Отчёты о дефектах
Следующие отчеты об изменениях в поведении, содержащие описания дефектов, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применяется к | Поведение в опубликованной версии | Корректное поведение |
|---|---|---|---|
| LWG 3014 | C++17 |
error_code
перегрузка
remove_all
помечена как noexcept, но может выделять память
|
noexcept удалён |
Смотрите также
|
удаляет файл
(функция) |