| Classes | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Functions | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| File types | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Defined in header <filesystem> | ||
bool remove(conststd::filesystem::path& p); | (1) | (since C++17) |
bool remove(conststd::filesystem::path& p,std::error_code& ec)noexcept; | (2) | (since C++17) |
std::uintmax_t remove_all(conststd::filesystem::path& p); | (3) | (since C++17) |
std::uintmax_t remove_all(conststd::filesystem::path& p,std::error_code& ec); | (4) | (since C++17) |
remove. Symlinks are not followed (symlink is removed, not its target).remove. Symlinks are not followed (symlink is removed, not its target).Contents |
| p | - | path to delete |
| ec | - | out-parameter for error reporting in the non-throwing overload. |
error_code& argument returnsfalse on errors.error_code& argument returnsstatic_cast<std::uintmax_t>(-1) on error.Any overload not markednoexcept may throwstd::bad_alloc if memory allocation fails.
On POSIX systems, this function typically callsunlink andrmdir as needed, on WindowsDeleteFileW andRemoveDirectoryW.
Ifp did not exist, this function returnsfalse and does not report an error.
#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()}; constauto O_O{"O_O"};std::ofstream{tmp/ O_O}<< O_O;// creates file containing O_Ostd::cout<<"remove(): "<< fs::remove(tmp/ O_O)<<'\n';// successstd::cout<<"remove(): "<< fs::remove(tmp/ O_O)<<'\n';// fail std::filesystem::create_directories(tmp/"abcdef/example");conststd::uintmax_t n{fs::remove_all(tmp/"abcdef")};std::cout<<"remove_all(): "<< n<<" files or directories\n";}
Possible output:
remove(): trueremove(): falseremove_all(): 2 files or directories
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 3014 | C++17 | error_code overload ofremove_all marked noexcept but can allocate memory | noexcept removed |
| erases a file (function)[edit] |