Namespaces
Variants

std::filesystem:: relative, std::filesystem:: proximate

From cppreference.net
Défini dans l'en-tête <filesystem>
path relative ( const std:: filesystem :: path & p,
std:: error_code & ec ) ;
(1) (depuis C++17)
(2) (depuis C++17)
path relative ( const std:: filesystem :: path & p,

const std:: filesystem :: path & base,

std:: error_code & ec ) ;
(3) (depuis C++17)
path proximate ( const std:: filesystem :: path & p,
std:: error_code & ec ) ;
(4) (depuis C++17)
(5) (depuis C++17)
path proximate ( const std:: filesystem :: path & p,

const std:: filesystem :: path & base,

std:: error_code & ec ) ;
(6) (depuis C++17)
1) Retourne relative ( p, current_path ( ) , ec ) .
2,3) Retourne p rendu relatif à base . Résout les liens symboliques et normalise à la fois p et base avant tout autre traitement. Retourne effectivement std:: filesystem :: weakly_canonical ( p ) . lexically_relative ( std:: filesystem :: weakly_canonical ( base ) ) ou std:: filesystem :: weakly_canonical ( p, ec ) . lexically_relative ( std:: filesystem :: weakly_canonical ( base, ec ) ) , sauf que la forme avec code d'erreur retourne path ( ) à la première occurrence d'erreur, le cas échéant.
4) Retourne proximate ( p, current_path ( ) , ec ) .
5,6) Retourne effectivement std:: filesystem :: weakly_canonical ( p ) . lexically_proximate ( std:: filesystem :: weakly_canonical ( base ) ) ou std:: filesystem :: weakly_canonical ( p, ec ) . lexically_proximate ( std:: filesystem :: weakly_canonical ( base, ec ) ) , sauf que la forme avec code d'erreur retourne path ( ) à la première occurrence d'erreur, le cas échéant.

Table des matières

Paramètres

p - un chemin existant
base - chemin de base, par rapport auquel p sera rendu relatif/proche
ec - code d'erreur pour stocker l'état d'erreur

Valeur de retour

1) p rendu relatif par rapport à current_path ( ) .
2,3) p rendu relatif par rapport à base .
4) p rendu proche par rapport à current_path ( ) .
5,6) p rendu proche de base .

Exceptions

Toute surcharge non marquée noexcept peut lever std::bad_alloc si l'allocation de mémoire échoue.

2,5) Lance std::filesystem::filesystem_error en cas d'erreurs de l'API système sous-jacente, construit avec p comme premier argument de chemin, base comme second argument de chemin, et le code d'erreur du système comme argument de code d'erreur.
1,3,4,6) Définit un paramètre std:: error_code & sur le code d'erreur de l'API du système d'exploitation si un appel d'API système échoue, et exécute ec. clear ( ) si aucune erreur ne survient.

Exemple

#include <filesystem>
#include <iostream>
void show(std::filesystem::path x, std::filesystem::path y)
{
    std::cout << "x:\t\t " << x << "\ny:\t\t " << y << '\n'
              << "relative(x, y):  "
              << std::filesystem::relative(x, y) << '\n'
              << "proximate(x, y): "
              << std::filesystem::proximate(x, y) << "\n\n";
}
int main()
{
    show("/a/b/c", "/a/b");
    show("/a/c", "/a/b");
    show("c", "/a/b");
    show("/a/b", "c");
}

Sortie possible :

x:               "/a/b/c"
y:               "/a/b"
relative(x, y):  "c"
proximate(x, y): "c"
x:               "/a/c"
y:               "/a/b"
relative(x, y):  "../c"
proximate(x, y): "../c"
x:               "c"
y:               "/a/b"
relative(x, y):  ""
proximate(x, y): "c"
x:               "/a/b"
y:               "c"
relative(x, y):  ""
proximate(x, y): "/a/b"

Voir aussi

(C++17)
représente un chemin
(classe)
(C++17)
compose un chemin absolu
(fonction)
compose un chemin canonique
(fonction)
convertit le chemin en forme normale
convertit le chemin en forme relative
convertit le chemin en forme proximale
(fonction membre publique de std::filesystem::path )