| Member types | ||||||
| Member constants | ||||||
| Member functions | ||||||
| Path decomposition | ||||||
| Non-member functions | ||||||
| ||||||
| Helper classes | ||||||
path()noexcept; | (1) | (since C++17) |
path(const path& p); | (2) | (since C++17) |
path( path&& p)noexcept; | (3) | (since C++17) |
path( string_type&& source, format fmt= auto_format); | (4) | (since C++17) |
template<class Source> path(const Source& source, format fmt= auto_format); | (5) | (since C++17) |
template<class InputIt> path( InputIt first, InputIt last, format fmt= auto_format); | (6) | (since C++17) |
template<class Source> path(const Source& source,conststd::locale& loc, format fmt= auto_format); | (7) | (since C++17) |
template<class InputIt> path( InputIt first, InputIt last,conststd::locale& loc, format fmt= auto_format); | (8) | (since C++17) |
Constructs a newpath object.
| (since C++20) |
value_type iswchar_t, converts from to wide using thestd::codecvt<wchar_t,char,std::mbstate_t> facet ofloc. Otherwise, first converts to wide using thestd::codecvt<wchar_t,char,std::mbstate_t> facet and then converts to filesystem native character type usingstd::codecvt<wchar_t,value_type> facet ofloc.(5) and(7) participate in overload resolution only ifSource andpath are not the same type, and either:
Source is a specialization ofstd::basic_string orstd::basic_string_view, orContents |
| p | - | a path to copy |
| source | - | std::basic_string,std::basic_string_view, pointer to a null-terminated character string, or input iterator with a character value type that points to a null-terminated character sequence (the character type must bechar for overload(7)) |
| first, last | - | pair ofLegacyInputIterators that specify a character sequence |
| fmt | - | enumerator of typepath::format which specifies how pathname format is to be interpreted |
| loc | - | locale that defines encoding conversion to use |
| Type requirements | ||
-InputIt must meet the requirements ofLegacyInputIterator. | ||
-The value type ofInputIt must be one of the character typeschar,wchar_t,char8_t,(since C++20)char16_t andchar32_t to use the overload(6). | ||
-The value type ofInputIt must bechar to use the overload(8). | ||
For portable pathname generation from Unicode strings, see | (until C++20) |
| (since C++20) |
#include <filesystem>#include <iostream>namespace fs= std::filesystem; int main(){ fs::path p1="/usr/lib/sendmail.cf";// portable format fs::path p2="C:\\users\\abcdef\\AppData\\Local\\Temp\\";// native format fs::path p3= U"D:/猫.txt";// UTF-32 string fs::path p4= u8"~/狗.txt";// UTF-8 string std::cout<<"p1 = "<< p1<<'\n'<<"p2 = "<< p2<<'\n'<<"p3 = "<< p3<<'\n'<<"p4 = "<< p4<<'\n';}
Output:
p1 = "/usr/lib/sendmail.cf"p2 = "C:\\users\\abcdef\\AppData\\Local\\Temp\\"p3 = "D:/猫.txt"p4 = "~/狗.txt"
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 3244 | C++17 | constraint thatSource cannot bepath was missing | added |
(C++17)(deprecated in C++20) | creates apath from a UTF-8 encoded source(function)[edit] |