Namespaces
Variants

std::filesystem::path:: path

From cppreference.net
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 объект.

1) Создает пустой путь.
2) Конструктор копирования. Создает путь, чье имя пути в нативном и общем форматах совпадает с путем p .
3) Конструктор перемещения. Создает путь, чье имя пути в нативном и общем форматах совпадает с p , p остается в валидном, но неопределенном состоянии.
4-6) Создает путь из последовательности символов (формат интерпретируется как указано в fmt ), предоставленной source (4,5) , который является указателем или входным итератором на нуль-терминированную последовательность символов/широких символов, std::basic_string или std::basic_string_view , или представленной в виде пары входных итераторов [ first , last ) (6) . Допускается использование любых символьных типов char , char8_t , (since C++20) char16_t , char32_t , wchar_t , и метод преобразования в нативную кодировку зависит от используемого символьного типа source .
  • Если исходный символьный тип - char , предполагается, что кодировка источника является нативной узкой кодировкой (поэтому на POSIX-системах преобразование не выполняется).
  • Если исходный символьный тип - char8_t , используется преобразование из UTF-8 в нативную кодировку файловой системы.
(since C++20)
  • Если исходный символьный тип - char16_t , используется преобразование из UTF-16 в нативную кодировку файловой системы.
  • Если исходный символьный тип - char32_t , используется преобразование из UTF-32 в нативную кодировку файловой системы.
  • Если исходный символьный тип - wchar_t , предполагается, что входные данные представлены в нативной широкой кодировке (поэтому на Windows преобразование не выполняется).
7,8) Создает путь из последовательности символов (формат интерпретируется как указано в fmt ), предоставленной source (7) , который является указателем или входным итератором на нуль-терминированную последовательность символов, std::string , std::string_view , или представлен в виде пары входных итераторов [ first , last ) (8) . Единственный допустимый тип символов — char . Использует loc для выполнения преобразования кодировки символов. Если 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) .

Исключения

2,4-8) Может выбрасывать исключения, определяемые реализацией.

Примечания

Для портируемого формирования путей из строк Unicode см. u8path .

(до C++20)

path конструктор поддерживает создание из UTF-8 строки, когда источником является последовательность char8_t .

(начиная с 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
(функция)