Namespaces
Variants

std::filesystem:: remove, std::filesystem:: remove_all

From cppreference.net
Definido en el encabezado <filesystem>
bool remove ( const std:: filesystem :: path & p ) ;
(1) (desde C++17)
bool remove ( const std:: filesystem :: path & p, std:: error_code & ec ) noexcept ;
(2) (desde C++17)
(3) (desde C++17)
(4) (desde C++17)
1,2) El archivo o directorio vacío identificado por la ruta p se elimina como si fuera mediante la función POSIX remove . Los enlaces simbólicos no se siguen (se elimina el enlace simbólico, no su destino).
3,4) Elimina el contenido de p (si es un directorio) y el contenido de todos sus subdirectorios, recursivamente, luego elimina p mismo como si se aplicara repetidamente el estándar POSIX remove . Los enlaces simbólicos no se siguen (se elimina el enlace simbólico, no su destino).

Contenidos

Parámetros

p - ruta a eliminar
ec - parámetro de salida para reporte de errores en la sobrecarga que no lanza excepciones.

Valor de retorno

1,2) true si el archivo fue eliminado, false si no existía. La sobrecarga que toma el argumento error_code& devuelve false en caso de errores.
3,4) Devuelve el número de archivos y directorios que fueron eliminados (que puede ser cero si p no existía inicialmente). La sobrecarga que toma el argumento error_code& devuelve static_cast < std:: uintmax_t > ( - 1 ) en caso de error.

Excepciones

Cualquier sobrecarga no marcada como noexcept puede lanzar std::bad_alloc si la asignación de memoria falla.

1,3) Lanza std::filesystem::filesystem_error en errores de la API del sistema operativo subyacente, construido con p como primer argumento de ruta y el código de error del sistema operativo como argumento de código de error.
2,4) Establece un parámetro std:: error_code & al código de error de la API del sistema operativo si una llamada a la API del SO falla, y ejecuta ec. clear ( ) si no ocurren errores.

Notas

En sistemas POSIX, esta función normalmente llama a unlink y rmdir según sea necesario, mientras que en Windows llama a DeleteFileW y RemoveDirectoryW .

Si p no existiera, esta función retorna false y no reporta un error.

Ejemplo

#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; // crea un archivo que contiene O_O
    std::cout << "remove(): " << fs::remove(tmp / O_O) << '\n'; // éxito
    std::cout << "remove(): " << fs::remove(tmp / O_O) << '\n'; // fallo
    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";
}

Salida posible:

remove(): true
remove(): false
remove_all(): 2 files or directories

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 3014 C++17 error_code sobrecarga de remove_all marcada noexcept pero puede asignar memoria noexcept eliminado

Véase también

elimina un archivo
(función)