Namespaces
Variants

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

From cppreference.net
Défini dans l'en-tête <filesystem>
bool remove ( const std:: filesystem :: path & p ) ;
(1) (depuis C++17)
bool remove ( const std:: filesystem :: path & p, std:: error_code & ec ) noexcept ;
(2) (depuis C++17)
(3) (depuis C++17)
(4) (depuis C++17)
1,2) Le fichier ou le répertoire vide identifié par le chemin p est supprimé comme par la fonction POSIX remove . Les liens symboliques ne sont pas suivis (le lien symbolique est supprimé, pas sa cible).
3,4) Supprime le contenu de p (s'il s'agit d'un répertoire) et le contenu de tous ses sous-répertoires, récursivement, puis supprime p lui-même comme si on appliquait de manière répétée la fonction POSIX remove . Les liens symboliques ne sont pas suivis (le lien symbolique est supprimé, pas sa cible).

Table des matières

Paramètres

p - chemin à supprimer
ec - paramètre de sortie pour le rapport d'erreur dans la surcharge non-lancante.

Valeur de retour

1,2) true si le fichier a été supprimé, false s'il n'existait pas. La surcharge qui prend l'argument error_code& retourne false en cas d'erreurs.
3,4) Retourne le nombre de fichiers et répertoires qui ont été supprimés (qui peut être zéro si p n'existait pas initialement). La surcharge qui prend l'argument error_code& retourne static_cast < std:: uintmax_t > ( - 1 ) en cas d'erreur.

Exceptions

Toute surcharge non marquée noexcept peut lever std::bad_alloc si l'allocation de mémoire échoue.

1,3) Lance std::filesystem::filesystem_error en cas d'erreurs de l'API système sous-jacente, construit avec p comme premier argument de chemin et le code d'erreur du système comme argument de code d'erreur.
2,4) Définit un paramètre std:: error_code & au code d'erreur de l'API du système d'exploitation si un appel d'API du système d'exploitation échoue, et exécute ec. clear ( ) si aucune erreur ne survient.

Notes

Sur les systèmes POSIX, cette fonction appelle généralement unlink et rmdir selon les besoins, tandis que sous Windows DeleteFileW et RemoveDirectoryW .

Si p n'existait pas, cette fonction retourne false et ne génère pas d'erreur.

Exemple

#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; // crée un fichier contenant O_O
    std::cout << "remove(): " << fs::remove(tmp / O_O) << '\n'; // succès
    std::cout << "remove(): " << fs::remove(tmp / O_O) << '\n'; // échec
    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";
}

Sortie possible :

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

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Appliqué à Comportement publié Comportement corrigé
LWG 3014 C++17 error_code surcharge de remove_all marquée noexcept mais peut allouer de la mémoire noexcept supprimé

Voir aussi

supprime un fichier
(fonction)