Namespaces
Variants

std::filesystem:: current_path

From cppreference.net
Definiert im Header <filesystem>
path current_path ( ) ;
(1) (seit C++17)
path current_path ( std:: error_code & ec ) ;
(2) (seit C++17)
void current_path ( const std:: filesystem :: path & p ) ;
(3) (seit C++17)
void current_path ( const std:: filesystem :: path & p,
std:: error_code & ec ) noexcept ;
(4) (seit C++17)

Gibt den aktuellen Pfad zurück oder ändert ihn.

1,2) Gibt den absoluten Pfad des aktuellen Arbeitsverzeichnisses zurück, ermittelt wie (im nativen Format) durch POSIX getcwd . (2) gibt path ( ) zurück, falls ein Fehler auftritt.
3,4) Ändert das aktuelle Arbeitsverzeichnis zu p , wie durch POSIX chdir .

Inhaltsverzeichnis

Parameter

p - Pfad, in den das aktuelle Arbeitsverzeichnis geändert werden soll
ec - Out-Parameter für Fehlerberichterstattung in den nicht-werfenden Überladungen

Rückgabewert

1,2) Gibt das aktuelle Arbeitsverzeichnis zurück.
3,4) (keine)

Ausnahmen

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

1) Wirft std::filesystem::filesystem_error bei zugrundeliegenden OS-API-Fehlern, konstruiert mit dem OS-Fehlercode als Fehlercode-Argument.
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.
3) Wirft std::filesystem::filesystem_error bei zugrundeliegenden OS-API-Fehlern, konstruiert mit p als erstem Pfadargument und dem OS-Fehlercode als Fehlercodeargument.
4) Setzt einen std:: error_code & Parameter auf den OS-API-Fehlercode, wenn ein OS-API-Aufruf fehlschlägt, und führt ec. clear ( ) aus, falls keine Fehler auftreten.

Hinweise

Das aktuelle Arbeitsverzeichnis ist das Verzeichnis, das mit dem Prozess verknüpft ist und als Ausgangspunkt für die Pfadnamensauflösung relativer Pfade verwendet wird.

Der aktuelle Pfad, wie er von vielen Betriebssystemen zurückgegeben wird, ist eine gefährliche globale Variable. Er kann unerwartet durch Drittanbieter- oder Systembibliotheksfunktionen oder durch einen anderen Thread geändert werden.

Beispiel

#include <filesystem>
#include <iostream>
namespace fs = std::filesystem;
int main()
{
    std::cout << "Current path is " << fs::current_path() << '\n'; // (1)
    fs::current_path(fs::temp_directory_path()); // (3)
    std::cout << "Current path is " << fs::current_path() << '\n';
}

Mögliche Ausgabe:

Current path is "D:/local/ConsoleApplication1"
Current path is "E:/Temp"

Siehe auch

gibt ein Verzeichnis zurück, das für temporäre Dateien geeignet ist
(Funktion)