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.9 path decomposition [fs.path.decompose]

path root_name() const;

Returns: root-name, если путь в универсальном формате включает root-name, в противном случае path().

path root_directory() const;

Returns: root-directory, если путь в универсальном формате включает root-directory, в противном случае path().

path root_path() const;

Returns: root_­name() / root_­directory().

path relative_path() const;

Returns: path Состоят из имени пути в общем формате, если !empty(), начиная с первым filenameAFTER root-path. В противном случае path().

path parent_path() const;

Returns: *this если !has_­relative_­path(), в противном случае путь, имя пути общего формата которого является самым длинным префиксом имени пути общего формата, *this который производит на один элемент меньше в своей итерации.

path filename() const;

Returns: relative_­path().empty() ? path() : *--end().

[Example:

path("/foo/bar.txt").filename();   // yields "bar.txt"
path("/foo/bar").filename();       // yields "bar"
path("/foo/bar/").filename();      // yields ""
path("/").filename();              // yields ""
path("//host").filename();         // yields ""
path(".").filename();              // yields "."
path("..").filename();             // yields ".."

end example]

path stem() const;

Returns: Позвольте f быть общим путем в формате filename(). Возвращает путь, имя которого в общем формате:

  • f, если он не содержит периодов, кроме начального периода, или состоит только из одного или двух периодов;

  • в противном случае - префикс f окончания перед последним периодом.

[Example:

std::cout << path("/foo/bar.txt").stem(); // outputs "bar"
path p = "foo.bar.baz.tar";
for (; !p.extension().empty(); p = p.stem())
  std::cout << p.extension() << '\n';
  // outputs: .tar
  //          .baz
  //          .bar

end example]

path extension() const;

Returns: путь, имя пути которого в общем формате является суффиксом, filename() не включенным в stem().

[Example:

path("/foo/bar.txt").extension();  // yields ".txt" and stem() is "bar"
path("/foo/bar").extension();      // yields "" and stem() is "bar"
path("/foo/.profile").extension(); // yields "" and stem() is ".profile"
path(".bar").extension();          // yields "" and stem() is ".bar"
path("..bar").extension();         // yields ".bar" and stem() is "."

end example]

[ Note: Точка включена в возвращаемое значение, чтобы можно было отличить отсутствие расширения от пустого расширения. ]end note

[ Note: В операционных системах, отличных от POSIX, для пути pэто может быть не так p.stem() + p.extension() == p.filename(), даже если имена путей общего формата совпадают. ] end note