Namespaces
Variants

std::experimental::filesystem:: absolute, std::experimental::filesystem:: system_complete

From cppreference.net
Definiert im Header <experimental/filesystem>
path absolute ( const path & p, const path & base = current_path ( ) ) ;
(1) (filesystem TS)
path system_complete ( const path & p ) ;
path system_complete ( const path & p, error_code & ec ) ;
(2) (filesystem TS)
1) Gibt den absoluten Pfad von p relativ zu base gemäß den folgenden Regeln zurück:
  • Wenn p sowohl Root-Namen als auch Root-Verzeichnis hat (z.B. "C:\users" ), wird der Pfad unverändert zurückgegeben.
  • Wenn p einen Root-Namen hat, dem kein Root-Verzeichnis folgt (z.B. "C:text.txt" ), wird base zwischen den Root-Namen von p und den Rest von p eingefügt. Formal wird p. root_name ( ) / fs :: absolute ( base ) . root_directory ( ) / fs :: absolute ( base ) . relative_path ( ) / p. relative_path ( ) zurückgegeben.
  • Wenn p keinen Root-Namen, aber ein Root-Verzeichnis hat (z.B. "/var/tmp/file.txt" auf einem POSIX-System oder "\users \A BC\Document.doc" auf Windows), wird der Root-Name von base , falls vorhanden, an p vorangestellt (auf einem POSIX-System wird p nicht modifiziert, auf einem Windows-System wird "\users \A BC\Document.doc" zu "C:\users \A BC\Document.doc" ). Formal wird fs :: absolute ( base ) . root_name ( ) / p zurückgegeben.
  • Wenn p weder Root-Namen noch Root-Verzeichnis hat (z.B. "../file.txt" ), wird das gesamte base an p vorangestellt. Formal wird absolute ( base ) / p zurückgegeben.
2) Ermittelt den absoluten Pfad, der die Datei identifiziert, auf die die Dateiöffnungs-API des Betriebssystems bei gegebenem Pfadnamen p zugreifen würde. Auf POSIX-Systemen entspricht dies (1) mit dem Standardwert für base ( fs::current_path() ). Auf Windows-Systemen hat jedes logische Laufwerk sein eigenes aktuelles Arbeitsverzeichnis, und wenn p nicht bereits absolut ist und eine Root-Namen-Komponente besitzt (z.B. "E:filename.txt" ), wird das aktuelle Arbeitsverzeichnis dieses Laufwerks verwendet, das möglicherweise durch ein zuvor ausgeführtes Programm gesetzt wurde.

Inhaltsverzeichnis

Parameter

p - Pfad, der in absolute Form umgewandelt werden soll
base - Pfad (nicht notwendigerweise absolut), der als Ausgangspunkt dient
ec - Out-Parameter für Fehlerberichterstattung in der nicht-werfenden Überladung

Rückgabewert

Gibt einen absoluten (wenn auch nicht notwendigerweise kanonischen) Pfad zurück, der durch Kombinieren von p und base wie oben beschrieben gebildet wird.

Exceptions

The overload that does not take an error_code & parameter throws filesystem_error on underlying OS API errors, constructed with p as the first argument, base as the second argument, and the OS error code as the error code argument. std:: bad_alloc may be thrown if memory allocation fails. The overload taking an error_code & parameter sets it to the OS API error code if an OS API call fails, and executes ec. clear ( ) if no errors occur. This overload has
noexcept Spezifikation:
noexcept

Hinweise

Auf Systemen, die Root-Namen unterstützen (z.B. Windows), führt der Aufruf von absolute auf einem relativen Pfad mit einem Root-Namen (z.B. "D:file.txt" ), wenn der Root-Name von base unterschiedlich ist, normalerweise zu einem nicht existierenden Pfad.

Beispiel

#include <filesystem>
#include <iostream>
namespace fs = std::experimental::filesystem;
int main()
{
    fs::path p = "C:cl.exe";
    std::cout << "Current path is " << fs::current_path() << '\n'
              << "Absolute path for " << p << " is " << fs::absolute(p) << '\n'
	      << "System complete path for " << p << " is "
              << fs::system_complete(p) << '\n';
}

Mögliche Ausgabe:

Current path is "D:/local/ConsoleApplication1"
Absolute path for "C:cl.exe" is "C:/local/ConsoleApplication1/cl.exe"
System complete path for "C:cl.exe" is "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\cl.exe"

Siehe auch

bildet einen kanonischen Pfad
(Funktion)