Поделиться через


Класс path

Класс path хранит объект типа string_type, вызываемый myname здесь в целях экспозиции, подходящий для использования в качестве имени пути. string_type является синонимом, basic_string<value_type>где value_type является синонимом для wchar_t Windows или char POSIX.

Дополнительные сведения и примеры кода см. в разделе Навигация по файловой системе (C++).

Синтаксис

class path;

Конструкторы

Конструктор Description
path Создает документ path.

Определения типов

Введите имя Description
const_iterator Синоним для iterator.
iterator Двунаправленный итератор констант, указывающий path компоненты myname.
string_type Тип является синонимом basic_string<value_type>.

Функции элементов

Функция-член Description
append Добавляет указанную последовательность mypathв , преобразованную и вставляющую preferred_separator по мере необходимости.
assign mypath Заменяет указанную последовательность, преобразованную по мере необходимости.
begin path::iterator Возвращает элемент первого пути в имени пути, если он присутствует.
c_str Возвращает указатель на первый символ в mypath.
clear mypath.clear()Выполняется.
compare Возвращает значения сравнения.
concat Добавляет указанную последовательность mypathв преобразованную (но не вставку разделителя) по мере необходимости.
empty Возвращает mypath.empty().
end Возвращает итератор конца последовательности типа iterator.
extension Возвращает суффикс filename().
filename Возвращает корневой компонент mynameкаталога, в частности empty() ? path() : *--end(). Компонент может быть пустым.
generic_string Возвращает значение this->string<Elem, Traits, Alloc>(al) с (в Windows) любой обратной косой чертой, преобразованной в прямую косую черту.
generic_u16string Возвращает значение u16string() с (в Windows) любой обратной косой чертой, преобразованной в прямую косую черту.
generic_u32string Возвращает значение u32string() с (в Windows) любой обратной косой чертой, преобразованной в прямую косую черту.
generic_u8string Возвращает значение u8string() с (в Windows) любой обратной косой чертой, преобразованной в прямую косую черту.
generic_wstring Возвращает значение wstring() с (в Windows) любой обратной косой чертой, преобразованной в прямую косую черту.
has_extension Возвращает !extension().empty().
has_filename Возвращает !filename().empty().
has_parent_path Возвращает !parent_path().empty().
has_relative_path Возвращает !relative_path().empty().
has_root_directory Возвращает !root_directory().empty().
has_root_name Возвращает !root_name().empty().
has_root_path Возвращает !root_path().empty().
has_stem Возвращает !stem().empty().
is_absolute Для Windows функция возвращается has_root_name() && has_root_directory(). Для POSIX функция возвращается has_root_directory().
is_relative Возвращает !is_absolute().
make_preferred Преобразует каждый разделитель в необходимый preferred_separator .
native Возвращает собственное представление пути.
parent_path Возвращает родительский компонент mynameпути .
preferred_separator Постоянный объект предоставляет предпочтительный символ для разделения компонентов пути в зависимости от операционной системы размещения.
relative_path Возвращает компонент относительного mynameпути .
remove_filename Удаляет имя файла.
replace_extension Заменяет расширение myname.
replace_filename Заменяет имя файла.
root_directory Возвращает компонент корневого mynameкаталога .
root_name Возвращает компонент корневого mynameимени .
root_path Возвращает компонент корневого mynameпути .
stem stem Возвращает компонент myname.
string Преобразует последовательность, сохраненную в mypath.
swap swap(mypath, right.mypath)Выполняется.
u16string Преобразует последовательность, хранящуюся в mypath UTF-16, и возвращает ее, хранящуюся в объекте типа u16string.
u32string Преобразует последовательность, хранящуюся в mypath UTF-32, и возвращает ее, хранящуюся в объекте типа u32string.
u8string Преобразует последовательность, хранящуюся в mypath UTF-8, и возвращает ее, хранящуюся в объекте типа u8string.
value_type Тип описывает элементы пути, предпочитаемые в системе размещения.
wstring Преобразует последовательность, хранящуюся в mypath кодировке, предпочитаемой системой узла для wchar_t последовательности, и возвращает ее, хранящуюся в объекте типа wstring.

Операторы

Operator Description
operator= Заменяет элементы пути копией другого пути.
operator+= Различные concat выражения.
operator/= Различные append выражения.
operator string_type Возвращает myname.

Требования

Заголовок: <filesystem>

Пространство имен: std::experimental::filesystem

path::append

Добавляет указанную последовательность mypathв , преобразованную и вставляющую preferred_separator по мере необходимости.

template <class Source>
path& append(const Source& source);

template <class InIt>
path& append(InIt first, InIt last);

Параметры

source
Указанная последовательность.

first
Начало указанной последовательности.

last
Конец указанной последовательности.

path::assign

mypath Заменяет указанную последовательность, преобразованную по мере необходимости.

template <class Source>
path& assign(const Source& source);

template <class InIt>
path& assign(InIt first, InIt last);

Параметры

source
Указанная последовательность.

first
Начало указанной последовательности.

last
Конец указанной последовательности.

path::begin

path::iterator Возвращает элемент первого пути в имени пути, если он присутствует.

iterator begin() const;

path::c_str

Возвращает указатель на первый символ в mypath.

const value_type& *c_str() const noexcept;

path::clear

mypath.clear()Выполняется.

void clear() noexcept;

path::compare

Первая функция возвращает mypath.compare(pval.native()). Вторая функция возвращает mypath.compare(str). Третья функция возвращается mypath.compare(ptr).

int compare(const path& pval) const noexcept;
int compare(const string_type& str) const;
int compare(const value_type *ptr) const;

Параметры

pval
Путь для сравнения.

str
Строка для сравнения.

ptr
Указатель на сравнение.

path::concat

Добавляет указанную последовательность mypathв преобразованную (но не вставку разделителя) по мере необходимости.

template <class Source>
path& concat(const Source& source);

template <class InIt>
path& concat(InIt first, InIt last);

Параметры

source
Указанная последовательность.

first
Начало указанной последовательности.

last
Конец указанной последовательности.

path::const_iterator

Синоним для iterator.

typedef iterator const_iterator;

path::empty

Возвращает mypath.empty().

bool empty() const noexcept;

path::end

Возвращает итератор конца последовательности типа iterator.

iterator end() const;

path::extension

Возвращает суффикс filename().

path extension() const;

Замечания

Возвращает суффикс filename() X такого вида:

Если X == path(".") || X == path("..") или если X нет точки, суффикс пуст.

В противном случае суффикс начинается с самой крайней правой точки (и включает ее).

path::filename

Возвращает корневой компонент mynameкаталога, в частности empty() path() : *--end(). Компонент может быть пустым.

path filename() const;

path::generic_string

Возвращает значение this->string<Elem, Traits, Alloc>(al) с (в Windows) любой обратной косой чертой, преобразованной в прямую косую черту.

template <class Elem,
    class Traits = char_traits<Elem>,
    class Alloc = allocator<Elem>>
  basic_string<Elem, Traits, Alloc>
    generic_string(const Alloc& al = Alloc()) const;

string generic_string() const;

path::generic_u16string

Возвращает значение u16string() с (в Windows) любой обратной косой чертой, преобразованной в прямую косую черту.

u16string generic_u16string() const;

path::generic_u32string

Возвращает значение u32string() с (в Windows) любой обратной косой чертой, преобразованной в прямую косую черту.

u32string generic_u32string() const;

path::generic_u8string

Возвращает значение u8string() с (в Windows) любой обратной косой чертой, преобразованной в прямую косую черту.

string generic_u8string() const;

path::generic_wstring

Возвращает значение wstring() с (в Windows) любой обратной косой чертой, преобразованной в прямую косую черту.

wstring generic_wstring() const;

path::has_extension

Возвращает !extension().empty().

bool has_extension() const;

path::has_filename

Возвращает !filename().empty().

bool has_filename() const;

path::has_parent_path

Возвращает !parent_path().empty().

bool has_parent_path() const;

path::has_relative_path

Возвращает !relative_path().empty().

bool has_relative_path() const;

path::has_root_directory

Возвращает !root_directory().empty().

bool has_root_directory() const;

path::has_root_name

Возвращает !root_name().empty().

bool has_root_name() const;

path::has_root_path

Возвращает !root_path().empty().

bool has_root_path() const;

path::has_stem

Возвращает !stem().empty().

bool has_stem() const;

path::is_absolute

Для Windows функция возвращается has_root_name() && has_root_directory(). Для POSIX функция возвращается has_root_directory().

bool is_absolute() const;

path::is_relative

Возвращает !is_absolute().

bool is_relative() const;

path::iterator

Двунаправленный итератор констант, указывающий компоненты mynameпути.

class iterator
   {
   // bidirectional iterator for path
   typedef bidirectional_iterator_tag iterator_category;
   typedef path_type value_type;
   typedef ptrdiff_t difference_type;
   typedef const value_type *pointer;
   typedef const value_type& reference;
   // ...
   };

Замечания

Класс описывает двунаправленный итератор констант, указывающий path компоненты myname последовательности:

  1. корневое имя (при наличии);

  2. корневой каталог (при наличии);

  3. Остальные элементы каталога родительского pathэлемента, если они присутствуют, заканчиваются именем файла, если они присутствуют.

Для pval объекта типа path:

  1. path::iterator X = pval.begin() указывает первый path элемент в имени пути, если он присутствует.

  2. X == pval.end() — это true время, когда X точки только после окончания последовательности компонентов.

  3. *X возвращает строку, соответствующую текущему компоненту.

  4. ++X указывает на следующий компонент в последовательности, если он имеется.

  5. --X указывает на предыдущий компонент в последовательности, если он имеется.

  6. Изменение myname недопустимых всех итераторов, указывающих элементы в myname.

path::make_preferred

Преобразует каждый разделитель в необходимый preferred_separator .

path& make_preferred();

path::native

Получение собственного строкового представления пути.

const string_type& native() const noexcept;

Замечания

Путь доступен в переносимом универсальном формате (см. ) generic_string()или собственном формате пути. Эта функция возвращает собственную строку. В системе POSIX универсальный формат и собственный формат совпадают.

В следующем примере, работающем в Windows 11, строка универсального пути — c:/t/temp/temp.txt и собственная строка c:\\t\\temp.txt

// Compile with /std:c++17 or higher
#include <filesystem>

int main()
{
    std::filesystem::path p(R"(c:\t\temp.txt)");
    auto native = p.native(); // Windows: L"c:\\t\temp.txt"
    auto generic = p.generic_string(); // Windows: "c:/t/temp.txt"
}

path::operator=

Заменяет элементы пути копией другого пути.

path& operator=(const path& right);
path& operator=(path&& right) noexcept;

template <class Source>
path& operator=(const Source& source);

Параметры

right
Копируемый path в .path

source
Источник path.

Замечания

Первый оператор-член копируется right.myname в myname. Второй оператор-член перемещается right.myname в myname. Третий оператор-член работает так же, как *this = path(source).

path::operator+=

Различные concat выражения.

path& operator+=(const path& right);
path& operator+=(const string_type& str);
path& operator+=(const value_type *ptr);
path& operator+=(value_type elem);

template <class Source>
path& operator+=(const Source& source);

template <class Elem>
path& operator+=(Elem elem);

Параметры

right
Добавлен путь.

str
Добавленная строка.

ptr
Добавлен указатель.

elem
Добавлен или value_type Elem.

source
Добавлен источник.

Замечания

Функции-члены работают так же, как следующие соответствующие выражения:

  1. concat(right);

  2. concat(path(str));

  3. concat(ptr);

  4. concat(string_type(1, elem));

  5. concat(source);

  6. concat(path(basic_string<Elem>(1, elem)));

path::operator/=

Различные append выражения.

path& operator/=(const path& right);

template <class Source>
path& operator/=(const Source& source);

Параметры

right
Добавлен путь.

source
Добавлен источник.

Замечания

Функции-члены работают так же, как следующие соответствующие выражения:

  1. append(right);

  2. append(source);

path::operator string_type

Возвращает myname.

operator string_type() const;

path::parent_path

Возвращает родительский компонент mynameпути .

path parent_path() const;

Замечания

Возвращает родительский компонент mynameпути , в частности префикс myname после удаления filename().native() и всех непосредственно предыдущих разделителей каталогов. (В равной степени, если begin() != end()это объединение всех элементов в диапазоне [begin(), --end()) путем последовательного применения operator/=.) Компонент может быть пустым.

path::path

Создает различные path способы.

path();

path(const path& right);
path(path&& right) noexcept;

template <class Source>
path(const Source& source);

template <class Source>
path(const Source& source, const locale& loc);

template <class InIt>
path(InIt first, InIt last);

template <class InIt>
path(InIt first, InIt last, const locale& loc);

Параметры

right
Путь, по которому построенный путь должен быть копией.

source
Источник, из которого построен путь должен быть копией.

loc
Указанный языковой стандарт.

first
Позиция первого элемента, который следует скопировать.

last
Позиция последнего элемента, скопированного.

Замечания

Конструкторы всех конструкций myname различными способами:

Для path() этого myname().

Для path(const path& right) это myname(right.myname).

Для path(path&& right) этого myname(right.myname).

Для template<class Source> path(const Source& source) этого myname(source).

Для template<class Source> path(const Source& source, const locale& loc) этого myname(source)необходимо получить все необходимые codecvt аспекты.loc

Для template<class InIt> path(InIt first, InIt last) этого myname(first, last).

Для template<class InIt> path(InIt first, InIt last, const locale& loc) этого myname(first, last)необходимо получить все необходимые codecvt аспекты.loc

path::preferred_separator

Постоянный объект предоставляет предпочтительный символ для разделения компонентов пути в зависимости от операционной системы размещения.

#if _WIN32_C_LIB
static constexpr value_type preferred_separator == L'\\';
#else // assume POSIX
static constexpr value_type preferred_separator == '/';
#endif // filesystem model now defined

Замечания

В большинстве контекстов в Windows L'/' используется одинаково допустимо.

path::relative_path

Возвращает компонент относительного mynameпути .

path relative_path() const;

Замечания

Возвращает компонент относительного mynamemyname пути , в частности суффикс после удаления root_path().native() и любые немедленно последующие избыточные разделители каталогов. Компонент может быть пустым.

path::remove_filename

Удаляет имя файла.

path& remove_filename();

path::replace_extension

Заменяет расширение myname.

path& replace_extension(const path& newext = path());

Параметры

newext
Новое расширение.

Замечания

Сначала удаляет суффикс extension().native() из myname. Затем, если (где находится точка*path(".").c_str()), то точка добавляется в myname.!newext.empty() && newext[0] != dot Затем newext добавляется в myname.

path::replace_filename

Заменяет имя файла.

path& replace_filename(const path& pval);

Параметры

pval
Путь к имени файла.

Замечания

Функция-член выполняет:

remove_filename();

*this /= pval;
return (*this);

path::root_directory

Возвращает компонент корневого mynameкаталога .

path root_directory() const;

Замечания

Компонент может быть пустым.

path::root_name

Возвращает компонент корневого mynameимени .

path root_name() const;

Замечания

Компонент может быть пустым.

path::root_path

Возвращает компонент корневого mynameпути .

path root_path() const;

Замечания

Возвращает корневой компонент mynameпути , в частности / root_name()root_directory. Компонент может быть пустым.

path::stem

stem Возвращает компонент myname.

path stem() const;

Замечания

stem Возвращает компонент myname, в частностиfilename().native(), с любым конечным удалениемextension().native(). Компонент может быть пустым.

path::string

Преобразует последовательность, сохраненную в mypath.

template \<class Elem, class Traits = char_traits\<Elem>, class Alloc = allocator\<Elem>>
basic_string\<Elem, Traits, Alloc> string(const Alloc& al = Alloc()) const;
string string() const;

Замечания

Первая функция-член (шаблон) преобразует последовательность, хранящуюся таким mypath же образом, как:

  1. string() для string<char, Traits, Alloc>()

  2. wstring() для string<wchar_t, Traits, Alloc>()

  3. u16string() для string<char16_t, Traits, Alloc>()

  4. u32string() для string<char32_t, Traits, Alloc>()

Вторая функция-член преобразует последовательность, хранящуюся в mypath кодировке, предпочитаемую системой узла для char последовательности, и возвращает ее, хранящуюся в объекте типа string.

path::string_type

Тип является синонимом basic_string<value_type>.

typedef basic_string<value_type> string_type;

path::swap

swap(mypath, right.mypath)Выполняется.

void swap(path& right) noexcept;

path::u16string

Преобразует последовательность, хранящуюся в mypath UTF-16, и возвращает ее, хранящуюся в объекте типа u16string.

u16string u16string() const;

path::u32string

Преобразует последовательность, хранящуюся в mypath UTF-32, и возвращает ее, хранящуюся в объекте типа u32string.

u32string u32string() const;

path::u8string

Преобразует последовательность, хранящуюся в mypath UTF-8, и возвращает ее, хранящуюся в объекте типа u8string.

string u8string() const;

path::value_type

Тип описывает path элементы, предпочитаемые операционной системой узла.

#if _WIN32_C_LIB
typedef wchar_t value_type;
#else // assume POSIX
typedef char value_type;
#endif // filesystem model now defined

path::wstring

Преобразует последовательность, хранящуюся в mypath кодировке, предпочитаемой системой узла для wchar_t последовательности, и возвращает ее, хранящуюся в объекте типа wstring.

wstring wstring() const;

См. также

Справочник по файлам заголовков