std::filesystem::path:: path
|
path
(
)
noexcept
;
|
(1) | (начиная с C++17) |
|
path
(
const
path
&
p
)
;
|
(2) | (начиная с C++17) |
|
path
(
path
&&
p
)
noexcept
;
|
(3) | (начиная с C++17) |
|
path
(
string_type
&&
source, format fmt
=
auto_format
)
;
|
(4) | (начиная с C++17) |
|
template
<
class
Source
>
path ( const Source & source, format fmt = auto_format ) ; |
(5) | (начиная с C++17) |
|
template
<
class
InputIt
>
path ( InputIt first, InputIt last, format fmt = auto_format ) ; |
(6) | (начиная с C++17) |
|
template
<
class
Source
>
path ( const Source & source, const std:: locale & loc, format fmt = auto_format ) ; |
(7) | (начиная с C++17) |
|
template
<
class
InputIt
>
path ( InputIt first, InputIt last, const std:: locale & loc, format fmt = auto_format ) ; |
(8) | (начиная с C++17) |
Создает новый
path
объект.
-
- Если исходный символьный тип - char , предполагается, что кодировка источника является нативной узкой кодировкой (поэтому на POSIX-системах преобразование не выполняется).
|
(since C++20) |
-
- Если исходный символьный тип - char16_t , используется преобразование из UTF-16 в нативную кодировку файловой системы.
- Если исходный символьный тип - char32_t , используется преобразование из UTF-32 в нативную кодировку файловой системы.
- Если исходный символьный тип - wchar_t , предполагается, что входные данные представлены в нативной широкой кодировке (поэтому на Windows преобразование не выполняется).
value_type
является
wchar_t
, преобразует в широкий формат с использованием фасета
std::
codecvt
<
wchar_t
,
char
,
std::
mbstate_t
>
из
loc
. В противном случае сначала преобразует в широкий формат с использованием фасета
std::
codecvt
<
wchar_t
,
char
,
std::
mbstate_t
>
, а затем преобразует в собственный тип символов файловой системы с использованием фасета
std::
codecvt
<
wchar_t
,value_type
>
из
loc
.
(5)
и
(7)
участвуют в разрешении перегрузки только если
Source
и
path
не являются одним и тем же типом, и выполняется одно из условий:
-
Sourceявляется специализацией std::basic_string или std::basic_string_view , или - std:: iterator_traits < std:: decay_t < Source >> :: value_type является валидным и обозначает возможно const-квалифицированный символьный тип кодировки ( char , char8_t , (since C++20) char16_t , char32_t , или wchar_t ).
Содержание |
Параметры
| p | - | путь для копирования |
| source | - | std::basic_string , std::basic_string_view , указатель на строку с нулевым завершителем, или входной итератор с типом значения-символа, указывающий на последовательность символов с нулевым завершителем (тип символа должен быть char для перегрузки (7) ) |
| first, last | - | пара LegacyInputIterator s , задающая последовательность символов |
| fmt | - | перечислитель типа path::format , который определяет, как интерпретировать формат имени пути |
| loc | - | локаль, определяющая преобразование кодировки для использования |
| Требования к типам | ||
-
InputIt
должен удовлетворять требованиям
LegacyInputIterator
.
|
||
-
InputIt
должен быть одним из символьных типов
char
,
wchar_t
,
char8_t
,
(since C++20)
char16_t
и
char32_t
для использования перегрузки
(6)
.
|
||
-
InputIt
должен быть
char
для использования перегрузки
(8)
.
|
||
Исключения
Примечания
|
Для портируемого формирования путей из строк Unicode см.
|
(до C++20) |
|
|
(начиная с C++20) |
Пример
#include <filesystem> #include <iostream> namespace fs = std::filesystem; int main() { fs::path p1 = "/usr/lib/sendmail.cf"; // переносимый формат fs::path p2 = "C:\\users\\abcdef\\AppData\\Local\\Temp\\"; // нативный формат fs::path p3 = U"D:/猫.txt"; // UTF-32 строка fs::path p4 = u8"~/狗.txt"; // UTF-8 строка std::cout << "p1 = " << p1 << '\n' << "p2 = " << p2 << '\n' << "p3 = " << p3 << '\n' << "p4 = " << p4 << '\n'; }
Вывод:
p1 = "/usr/lib/sendmail.cf" p2 = "C:\\users\\abcdef\\AppData\\Local\\Temp\\" p3 = "D:/猫.txt" p4 = "~/狗.txt"
Отчеты о дефектах
Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены задним числом к ранее опубликованным стандартам C++.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 3244 | C++17 |
constraint that
Source
cannot be
path
was missing
|
added |
Смотрите также
|
(C++17)
(устарело в C++20)
|
создаёт
path
из источника в кодировке UTF-8
(функция) |