std::experimental::filesystem:: absolute, std::experimental::filesystem:: system_complete
From cppreference.net
<
cpp
|
experimental
|
fs
|
Défini dans l'en-tête
<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)
Retourne le chemin absolu de
p
par rapport à
base
selon les règles suivantes :
-
- Si p possède à la fois un nom de racine et un répertoire racine (par exemple "C:\users" ), alors le chemin est retourné sans modification.
- Si p possède un nom de racine non suivi d'un répertoire racine (par exemple "C:text.txt" ), alors base est inséré entre le nom de racine de p et le reste de p . Formellement, p. root_name ( ) / fs :: absolute ( base ) . root_directory ( ) / fs :: absolute ( base ) . relative_path ( ) / p. relative_path ( ) est retourné.
- Si p n'a pas de nom de racine mais possède un répertoire racine (par exemple "/var/tmp/file.txt" sur un système POSIX ou "\users \A BC\Document.doc" sur Windows), alors le nom de racine de base , s'il en possède un, est ajouté devant p (sur un système POSIX, p n'est pas modifié ; sur un système Windows, "\users \A BC\Document.doc" devient "C:\users \A BC\Document.doc" ). Formellement, fs :: absolute ( base ) . root_name ( ) / p est retourné.
- Si p n'a ni nom de racine ni répertoire racine (par exemple "../file.txt" ), alors la totalité de base est ajoutée devant p . Formellement, absolute ( base ) / p est retourné.
2)
Obtient le chemin absolu identifiant le fichier que l'API d'ouverture de fichiers du système d'exploitation accéderait étant donné le chemin
p
. Sur les systèmes POSIX, cela équivaut à
(1)
avec la valeur par défaut de
base
(
fs::current_path()
). Sur les systèmes Windows, chaque lecteur logique possède son propre répertoire de travail courant, et donc si
p
n'est pas déjà absolu et comporte un composant de nom de racine (par exemple
"E:filename.txt"
), le répertoire de travail courant de ce lecteur est utilisé, lequel peut avoir été défini par un programme exécuté antérieurement.
Table des matières |
Paramètres
| p | - | chemin à convertir en forme absolue |
| base | - | chemin (pas nécessairement absolu) à utiliser comme emplacement de départ |
| ec | - | paramètre de sortie pour le rapport d'erreurs dans la surcharge non-lancante |
Valeur de retour
Retourne un chemin absolu (bien que pas nécessairement canonique) formé en combinant p et base comme décrit ci-dessus.
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 **Note:** Le texte à traduire ne contient que des balises HTML et des termes C++ (`std::bad_alloc`), qui ne doivent pas être traduits selon vos instructions. Par conséquent, la sortie reste identique à l'entrée. 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
spécification :
noexcept
Notes
Sur les systèmes qui prennent en charge les noms de racine (par exemple Windows), le résultat de l'appel à
absolute
sur un chemin relatif qui possède un nom de racine (par exemple
"D:file.txt"
lorsque le nom de racine de
base
est différent résultera généralement en un chemin inexistant.
Exemple
Exécuter ce code
#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'; }
Sortie possible :
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"
Voir aussi
|
compose un chemin canonique
(fonction) |