std::experimental::filesystem:: absolute, std::experimental::filesystem:: system_complete
From cppreference.net
<
cpp
|
experimental
|
fs
|
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
Diesen Code ausführen
#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) |