Namensräume
Varianten
Aktionen

std::filesystem::current_path

Von cppreference.com
 
 
 
Definiert in 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 (im nativen Format) durch POSIX getcwd. (2) gibt path() zurück, wenn ein Fehler auftritt.
3,4) Ändert das aktuelle Arbeitsverzeichnis zu p, wie durch POSIX chdir.

Inhalt

[edit] Parameter

p - Pfad, zu dem das aktuelle Arbeitsverzeichnis geändert werden soll
ec - Ausgabeparameter für Fehlerberichte in den nicht-werfenden Überladungen

[edit] Rückgabewert

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

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

[edit] Anmerkungen

Das aktuelle Arbeitsverzeichnis ist das Verzeichnis, das dem Prozess zugeordnet ist und als Ausgangspunkt bei der Pfadauflösung für relative Pfade verwendet wird.

Der aktuelle Pfad, der von vielen Betriebssystemen zurückgegeben wird, ist eine gefährliche globale Variable. Er kann unerwartet durch Funktionen von Drittanbietern oder Systembibliotheken oder durch einen anderen Thread geändert werden.

[edit] 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"

[edit] Siehe auch

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