std::filesystem::directory_entry:: assign
From cppreference.net
<
cpp
|
filesystem
|
directory entry
|
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
Exécuter ce code
#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) |