std::experi...::remove_all(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

πŸ’… std::experi...::remove_all(3) πŸ’…

okay so we're in the C++ Standard Libary manual β€” yes, that's the spelling in the header, and we're respecting it β€” and this page is literally the delete-y duo: remove and remove_all. no cap, recursive deletion is giving main character energy. 🧒✨


🌸 NAME 🌸

std::experimental::filesystem::remove,std::experimental::filesystem::remove_all β€” std::experimental::filesystem::remove,std::experimental::filesystem::remove_all πŸ’–


πŸ¦‹ Synopsis πŸ¦‹

Defined in header <experimental/filesystem>:

bool remove( const path& p );                               (1)
(filesystem TS)
bool remove( const path& p, error_code& ec );
std::uintmax_t remove_all( const path& p );                 (2)
(filesystem TS)
std::uintmax_t remove_all( const path& p, error_code& ec );
  1. The file or empty directory identified by the path p is deleted as if by the POSIX remove. Symlinks are not followed (symlink is removed, not its target). 🫢
  2. Deletes the contents of p (if it is a directory) and the contents of all its subdirectories, recursively, then deletes p itself as if by repeatedly applying the POSIX remove. Symlinks are not followed (symlink is removed, not its target). 😭

πŸŽ€ Parameters πŸŽ€

  • p β€” path to delete.
  • ec β€” out-parameter for error reporting in the non-throwing overload.

πŸ’œ Return value πŸ’œ

  1. true if the file was deleted, false if it did not exist. The overload that takes error_code& argument returns false on errors.
  2. Returns the number of files and directories that were deleted (which may be zero if p did not exist to begin with). The overload that takes error_code& argument returns static_cast<std::uintmax_t>(-1) on error.

😭 Exceptions 😭

The overload that does not take an error_code& parameter throws filesystem_error on underlying OS API errors, constructed with p as the first argument and the OS error code as the error code argument. std::bad_alloc may be thrown if memory allocation fails.

The overload taking an error_code& parameter sets it to the OS API error code if an OS API call fails, and executes ec.clear() if no errors occur. This overload has noexcept specification: noexcept.


🧚 Notes 🧚

On POSIX systems, this function typically calls unlink and rmdir as needed, on Windows RemoveDirectoryW and DeleteFileW.


πŸ“ Example πŸ“

// Run this code

#include <cstdint>
#include <experimental/filesystem>
#include <iostream>
namespace fs = std::experimental::filesystem;

int main()
{
    fs::path dir = fs::temp_directory_path();
    fs::create_directories(dir / "abcdef/example");
    std::uintmax_t n = fs::remove_all(dir / "abcdef");
    std::cout << "Deleted " << n << " files or directories\n";
}

Possible output:

Deleted 2 files or directories

πŸ”₯ See also πŸ”₯

  • remove β€” erases a file (function)

🏷️ Categories 🏷️

  • Noindexed pages
  • unconditionally noexcept

πŸ™ˆ Hidden categories πŸ™ˆ

  • Pages with unreviewed unconditional noexcept template
  • Pages with unreviewed noexcept template

mwah πŸ’‹ β€” this lil page came from http://cppreference.com, dated 2024.06.10, and it's literally the std::experi...::remove_all(3) page. now go be iconic with your filesystem, bestie πŸ’…βœ¨

πŸ“¦ where this page comes from