30 Input/output library [input.output]

30.10 File systems [filesystems]

30.10.27 Class path [fs.class.path]

30.10.27.4 path members [fs.path.member]

30.10.27.4.5 path modifiers [fs.path.modifiers]

void clear() noexcept;

Postconditions: empty() == true.

path& make_preferred();

Effects: Каждый directory-separator путь в общем формате преобразуется в preferred-separator.

Returns: *this.

[Example:

path p("foo/bar");
std::cout << p << '\n';
p.make_preferred();
std::cout << p << '\n';

В операционной системе, где preferred-separatorстоит косая черта, вывод будет следующим:

"foo/bar"
"foo/bar"

В операционной системе, где preferred-separatorиспользуется обратная косая черта, вывод будет следующим:

"foo/bar"
"foo\bar"

end example]

path& remove_filename();

Postconditions: !has_­filename().

Effects: Удалите путь filename() к общему формату из пути к общему формату.

Returns: *this.

[Example:

path("foo/bar").remove_filename(); // yields "foo/"
path("foo/").remove_filename();    // yields "foo/"
path("/foo").remove_filename();    // yields "/"
path("/").remove_filename();       // yields "/"

end example]

path& replace_filename(const path& replacement);

Effects: Эквивалентен:

remove_filename();
operator/=(replacement);

Returns: *this.

[Example:

path("/foo").replace_filename("bar");  // yields "/bar" on POSIX
path("/").replace_filename("bar");     // yields "/bar" on POSIX

end example]

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

Effects:

  • Все существующие extension()([fs.path.decompose]) удаляются из пути в общем формате, затем

  • Если replacement не пусто и не начинается с точки, точка добавляется к имени пути в общем формате, затем

  • operator+=(replacement);.

Returns: *this.

void swap(path& rhs) noexcept;

Effects: Меняет местами содержимое (во всех форматах) двух путей.

Complexity: Постоянное время.