std::filesystem::path:: path
|
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
.
-
- 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).
|
(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).
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 :
-
Sourceest une spécialisation de std::basic_string ou std::basic_string_view , ou - std:: iterator_traits < std:: decay_t < Source >> :: value_type est valide et désigne un type de caractère d'encodage éventuellement qualifié const ( char , char8_t , (depuis C++20) char16_t , char32_t , ou wchar_t ).
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
.
|
||
-
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)
.
|
||
-
InputIt
doit être
char
pour utiliser la surcharge
(8)
.
|
||
Exceptions
Notes
|
Pour la génération portable de noms de chemin à partir de chaînes Unicode, voir
|
(jusqu'à C++20) |
|
|
(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) |