Namespaces
Variants

std::filesystem::path:: path

From cppreference.net
path ( ) noexcept ;
(1) (depuis C++17)
path ( const path & p ) ;
(2) (depuis C++17)
path ( path && p ) noexcept ;
(3) (depuis C++17)
path ( string_type && source, format fmt = auto_format ) ;
(4) (depuis C++17)
template < class Source >
path ( const Source & source, format fmt = auto_format ) ;
(5) (depuis C++17)
template < class InputIt >
path ( InputIt first, InputIt last, format fmt = auto_format ) ;
(6) (depuis C++17)
template < class Source >
path ( const Source & source, const std:: locale & loc, format fmt = auto_format ) ;
(7) (depuis C++17)
template < class InputIt >
path ( InputIt first, InputIt last, const std:: locale & loc, format fmt = auto_format ) ;
(8) (depuis C++17)

Construit un nouvel objet path .

1) Construit un chemin vide.
2) Constructeur de copie. Construit un chemin dont le nom, à la fois en format natif et générique, est identique à celui de p .
3) Constructeur de déplacement. Construit un chemin dont le nom de chemin, à la fois en formats natif et générique, est identique à celui de p , p est laissé dans un état valide mais non spécifié.
4-6) Construit le chemin à partir d'une séquence de caractères (format interprété comme spécifié par fmt ) fournie par source (4,5) , qui est un pointeur ou un itérateur d'entrée vers une séquence de caractères/large caractères terminée par un caractère nul, une std::basic_string ou une std::basic_string_view , ou représentée comme une paire d'itérateurs d'entrée [ first , last ) (6) . N'importe quel type de caractère char , char8_t , (since C++20) char16_t , char32_t , wchar_t est autorisé, et la méthode de conversion vers le jeu de caractères natif dépend du type de caractère utilisé par source .
  • Si le type de caractère source est char , l'encodage de la source est supposé être l'encodage étroit natif (donc aucune conversion n'a lieu sur les systèmes POSIX).
  • Si le type de caractère source est char8_t , la conversion de UTF-8 vers l'encodage natif du système de fichiers est utilisée.
(since C++20)
  • Si le type de caractère source est char16_t , la conversion de UTF-16 vers l'encodage natif du système de fichiers est utilisée.
  • Si le type de caractère source est char32_t , la conversion de UTF-32 vers l'encodage natif du système de fichiers est utilisée.
  • Si le type de caractère source est wchar_t , l'entrée est supposée être l'encodage large natif (donc aucune conversion n'a lieu sur Windows).
7,8) Construit le chemin à partir d'une séquence de caractères (format interprété comme spécifié par fmt ) fournie par source (7) , qui est un pointeur ou un itérateur d'entrée vers une séquence de caractères terminée par un caractère nul, une std::string , une std::string_view , ou représentée comme une paire d'itérateurs d'entrée [ first , last ) (8) . Le seul type de caractère autorisé est char . Utilise loc pour effectuer la conversion d'encodage des caractères. Si value_type est wchar_t , convertit en large en utilisant la facette std:: codecvt < wchar_t , char , std:: mbstate_t > de loc . Sinon, convertit d'abord en large en utilisant la facette std:: codecvt < wchar_t , char , std:: mbstate_t > puis convertit en type de caractère natif du système de fichiers en utilisant la facette std:: codecvt < wchar_t ,value_type > de loc .

(5) et (7) participent à la résolution de surcharge uniquement si Source et path ne sont pas du même type, et soit :

Table des matières

Paramètres

p - un chemin à copier
source - std::basic_string , std::basic_string_view , pointeur vers une chaîne de caractères terminée par un caractère nul, ou itérateur d'entrée avec un type de valeur caractère qui pointe vers une séquence de caractères terminée par un caractère nul (le type de caractère doit être char pour la surcharge (7) )
first, last - paire d' LegacyInputIterator s qui spécifie une séquence de caractères
fmt - énumérateur de type path::format qui spécifie comment le format du nom de chemin doit être interprété
loc - locale qui définit la conversion d'encodage à utiliser
Exigences de type
-
InputIt doit satisfaire aux exigences de LegacyInputIterator .
-
Le type de valeur de InputIt doit être l'un des types de caractères char , wchar_t , char8_t , (depuis C++20) char16_t et char32_t pour utiliser la surcharge (6) .
-
Le type de valeur de InputIt doit être char pour utiliser la surcharge (8) .

Exceptions

2,4-8) Peut lever des exceptions définies par l'implémentation.

Notes

Pour la génération portable de noms de chemin à partir de chaînes Unicode, voir u8path .

(jusqu'à C++20)

path le constructeur prend en charge la création à partir d'une chaîne UTF-8 lorsque la source est une séquence de char8_t .

(depuis C++20)

Exemple

#include <filesystem>
#include <iostream>
namespace fs = std::filesystem;
int main()
{
    fs::path p1 = "/usr/lib/sendmail.cf"; // format portable
    fs::path p2 = "C:\\users\\abcdef\\AppData\\Local\\Temp\\"; // format natif
    fs::path p3 = U"D:/猫.txt"; // chaîne UTF-32
    fs::path p4 = u8"~/狗.txt"; // chaîne UTF-8
    std::cout << "p1 = " << p1 << '\n'
              << "p2 = " << p2 << '\n'
              << "p3 = " << p3 << '\n'
              << "p4 = " << p4 << '\n';
}

Sortie :

p1 = "/usr/lib/sendmail.cf"
p2 = "C:\\users\\abcdef\\AppData\\Local\\Temp\\"
p3 = "D:/猫.txt"
p4 = "~/狗.txt"

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Applicable à Comportement publié Comportement corrigé
LWG 3244 C++17 la contrainte que Source ne peut pas être path était manquante ajoutée

Voir aussi

(C++17) (déprécié en C++20)
crée un path à partir d'une source encodée en UTF-8
(fonction)