Namespaces
Variants

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

From cppreference.net
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

#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)