Namensräume
Varianten
Aktionen

std::filesystem::absolute

Von cppreference.com
 
 
 
Definiert in Header <filesystem>
path absolute( const std::filesystem::path& p );
(1) (seit C++17)
path absolute( const std::filesystem::path& p, std::error_code& ec );
(2) (seit C++17)

Gibt einen Pfad zurück, der auf dieselbe Dateisystemposition wie p verweist, für den filesystem::path::is_absolute() true ist.

2) Diese nicht werfende Überladung gibt im Fehlerfall einen standardkonstruierten Pfad zurück.

Inhalt

[bearbeiten] Parameter

p - zu konvertierender Pfad zur absoluten Form
ec - Ausgabeparameter für die Fehlerberichterstattung in der nicht auslösenden Überladung

[bearbeiten] Rückgabewert

Gibt einen absoluten (wenn auch nicht notwendigerweise kanonischen) Pfadnamen zurück, der auf dieselbe Datei wie p verweist.

[bearbeiten] Ausnahmen

Jede Überladung, die nicht als noexcept markiert ist, kann std::bad_alloc auslösen, wenn die Speicherzuweisung fehlschlägt.

1) Wirft std::filesystem::filesystem_error bei zugrundeliegenden Betriebssystem-API-Fehlern, konstruiert mit p als erstem Pfadargument und dem Betriebssystem-Fehlercode als Fehlercodeargument.
2) Setzt einen std::error_code& Parameter auf den Betriebssystem-API-Fehlercode, wenn ein Betriebssystem-API-Aufruf fehlschlägt, und führt ec.clear() aus, wenn keine Fehler auftreten.

[bearbeiten] Anmerkungen

Implementierungen werden ermutigt, das Nichtvorhandensein von p nicht als Fehler zu betrachten.

Für POSIX-basierte Betriebssysteme ist std::filesystem::absolute(p) äquivalent zu std::filesystem::current_path() / p, außer wenn p der leere Pfad ist.

Für Windows kann std::filesystem::absolute als Aufruf von GetFullPathNameW implementiert sein.

[bearbeiten] Beispiel

#include <filesystem>
#include <iostream>
namespace fs = std::filesystem;
 
int main()
{
    std::filesystem::path p = "foo.c";
    std::cout << "Current path is " << std::filesystem::current_path() << '\n';
    std::cout << "Absolute path for " << p << " is " << fs::absolute(p) << '\n';
}

Mögliche Ausgabe

Current path is "/tmp/1666297965.0051296"
Absolute path for "foo.c" is "/tmp/1666297965.0051296/foo.c"

[bearbeiten] Siehe auch

komponiert einen kanonischen Pfad
(Funktion) [bearbeiten]
komponiert einen relativen Pfad
(Funktion) [bearbeiten]