Класс 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
последовательности:
корневое имя (при наличии);
корневой каталог (при наличии);
Остальные элементы каталога родительского
path
элемента, если они присутствуют, заканчиваются именем файла, если они присутствуют.
Для pval
объекта типа path
:
path::iterator X = pval.begin()
указывает первыйpath
элемент в имени пути, если он присутствует.X == pval.end()
— этоtrue
время, когдаX
точки только после окончания последовательности компонентов.*X
возвращает строку, соответствующую текущему компоненту.++X
указывает на следующий компонент в последовательности, если он имеется.--X
указывает на предыдущий компонент в последовательности, если он имеется.Изменение
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
Добавлен источник.
Замечания
Функции-члены работают так же, как следующие соответствующие выражения:
concat(right);
concat(path(str));
concat(ptr);
concat(string_type(1, elem));
concat(source);
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
Добавлен источник.
Замечания
Функции-члены работают так же, как следующие соответствующие выражения:
append(right);
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;
Замечания
Возвращает компонент относительного myname
myname
пути , в частности суффикс после удаления 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
же образом, как:
string()
дляstring<char, Traits, Alloc>()
wstring()
дляstring<wchar_t, Traits, Alloc>()
u16string()
дляstring<char16_t, Traits, Alloc>()
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;