std::filesystem::directory_entry:: assign
From cppreference.net
<
cpp
|
filesystem
|
directory entry
|
void
assign
(
const
std::
filesystem
::
path
&
p
)
;
|
(1) | (seit C++17) |
|
void
assign
(
const
std::
filesystem
::
path
&
p,
std::
error_code
&
ec
)
;
|
(2) | (seit C++17) |
Weist dem Verzeichniseintragsobjekt neuen Inhalt zu. Setzt den Pfad auf
p
und ruft
refresh
auf, um die zwischengespeicherten Attribute zu aktualisieren. Tritt ein Fehler auf, sind die Werte der zwischengespeicherten Attribute nicht spezifiziert.
Diese Funktion führt keine Änderungen am Dateisystem durch.
Inhaltsverzeichnis |
Parameter
| p | - | Pfad zum Dateisystemobjekt, auf das der Verzeichniseintrag verweisen wird |
| ec | - | Out-Parameter für Fehlerberichterstattung in der nicht-werfenden Überladung |
Rückgabewert
(keine)
Ausnahmen
Jede Überladung, die nicht als
noexcept
gekennzeichnet ist, kann
std::bad_alloc
werfen, wenn die Speicherallokation fehlschlägt.
1)
Wirft
std::filesystem::filesystem_error
bei zugrundeliegenden OS-API-Fehlern, konstruiert mit
p
als erstem Pfadargument und dem OS-Fehlercode als Fehlercodeargument.
2)
Setzt einen
std::
error_code
&
Parameter auf den OS-API-Fehlercode, wenn ein OS-API-Aufruf fehlschlägt, und führt
ec.
clear
(
)
aus, wenn keine Fehler auftreten.
Beispiel
Diesen Code ausführen
#include <filesystem> #include <fstream> #include <iostream> void print_entry_info(const std::filesystem::directory_entry& entry) { if (std::cout << "Der Eintrag " << entry; not entry.exists()) { std::cout << " existiert nicht im Dateisystem\n"; return; } std::cout << " ist "; if (entry.is_directory()) std::cout << "ein Verzeichnis\n"; if (entry.is_regular_file()) std::cout << "eine reguläre Datei\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); // der Eintrag enthält noch den alten "Zustand" std::cout << "entry.assign();\n"; entry.assign(entry); // oder einfach entry.refresh() aufrufen print_entry_info(entry); }
Mögliche Ausgabe:
Der Eintrag "/tmp" ist ein Verzeichnis entry.assign(); Der Eintrag "/tmp/cppreference.html" ist eine reguläre Datei remove(entry); Der Eintrag "/tmp/cppreference.html" ist eine reguläre Datei entry.assign(); Der Eintrag "/tmp/cppreference.html" existiert nicht im Dateisystem
Siehe auch
|
weist Inhalte zu
(öffentliche Elementfunktion) |