Namespaces
Variants

std::filesystem::directory_entry:: assign

From cppreference.net
void assign ( const std:: filesystem :: path & p ) ;
(1) (depuis C++17)
void assign ( const std:: filesystem :: path & p, std:: error_code & ec ) ;
(2) (depuis C++17)

Attribue un nouveau contenu à l'objet d'entrée de répertoire. Définit le chemin vers p et appelle refresh pour mettre à jour les attributs en cache. Si une erreur se produit, les valeurs des attributs en cache sont non spécifiées.

Cette fonction ne valide aucune modification dans le système de fichiers.

Table des matières

Paramètres

p - chemin vers l'objet du système de fichiers auquel l'entrée de répertoire fera référence
ec - paramètre de sortie pour le rapport d'erreurs dans la surcharge non-lançante

Valeur de retour

(aucun)

Exceptions

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

1) 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) Définit un paramètre std:: error_code & avec le code d'erreur de l'API système si un appel d'API système échoue, et exécute ec. clear ( ) si aucune erreur ne survient.

Exemple

#include <filesystem>
#include <fstream>
#include <iostream>
void print_entry_info(const std::filesystem::directory_entry& entry)
{
    if (std::cout << "L'entrée " << entry; not entry.exists())
    {
        std::cout << " n'existe pas sur le système de fichiers\n";
        return;
    }
    std::cout << " est ";
    if (entry.is_directory())
        std::cout << "un répertoire\n";
    if (entry.is_regular_file())
        std::cout << "un fichier régulier\n";
    /*...*/
}
int main()
{
    std::filesystem::current_path(std::filesystem::temp_directory_path());
    std::filesystem::directory_entry entry{std::filesystem::current_path()};
    print_entry_info(entry);
    std::filesystem::path name{"cppreference.html"};
    std::ofstream{name} << "C++";
    std::cout << "entry.assign();\n";
    entry.assign(entry/name);
    print_entry_info(entry);
    std::cout << "remove(entry);\n";
    std::filesystem::remove(entry);
    print_entry_info(entry); // l'entrée contient toujours l'ancien "état"
    std::cout << "entry.assign();\n";
    entry.assign(entry); // ou simplement appeler entry.refresh()
    print_entry_info(entry);
}

Sortie possible :

L'entrée "/tmp" est un répertoire
entry.assign();
L'entrée "/tmp/cppreference.html" est un fichier régulier
remove(entry);
L'entrée "/tmp/cppreference.html" est un fichier régulier
entry.assign();
L'entrée "/tmp/cppreference.html" n'existe pas sur le système de fichiers

Voir aussi

assigne le contenu
(fonction membre publique)