Spec-Zone.ru › C++

std::filesystem::path::extension

path extension() const;
(since C++17)

Возвращает расширение компонента имени файла в представлении пути общего формата *this.

Если компонент filename() пути общего формата содержит точку (.), и не является одним из специальных элементов файловой системы dot или dot-dot, то расширение — это подстрока, начинающаяся с правой точки (включая точку) и заканчивающаяся концом пути.

Если первый символ в имени файла — точка, эта точка игнорируется (имя файла, как ".profile", не рассматривается как расширение).

Если путь является . или .., или если компонент filename() не содержит символ '.', возвращается пустой путь.

Дополнительное поведение может быть определено реализациями для файловых систем, добавляющих дополнительные элементы (например, альтернативные потоки данных или имена разделенных набора данных) к расширениям.

Параметры

(нет)

Возвращаемое значение

Расширение текущего пути или пустой путь, если расширение отсутствует.

Исключения

Может вызывать реализационно-определенные исключения.

Примечания

Расширение, возвращаемое этой функцией, включает точку, чтобы можно было отличить файл, заканчивающийся точкой (функция возвращает "."), от файла без расширения (функция возвращает "").

В не-POSIX системах возможно, что p.stem() + p.extension() != p.filename(), даже если представления пути общего формата одинаковы.

Пример

#include <filesystem>
#include <iostream>
namespace fs = std::filesystem;
 
int main()
{
    std::cout << fs::path("/foo/bar.txt").extension() << '\n'
              << fs::path("/foo/bar.").extension() << '\n'
              << fs::path("/foo/bar").extension() << '\n'
              << fs::path("/foo/bar.txt/bar.cc").extension() << '\n'
              << fs::path("/foo/bar.txt/bar.").extension() << '\n'
              << fs::path("/foo/bar.txt/bar").extension() << '\n'
              << fs::path("/foo/.").extension() << '\n'
              << fs::path("/foo/..").extension() << '\n'
              << fs::path("/foo/.hidden").extension() << '\n'
              << fs::path("/foo/..bar").extension() << '\n';
}

Вывод:

".txt"
"."
""
".cc"
"."
""
""
""
""
".bar"

См. также

filename
возвращает компонент пути имени файла
(публичный член-функция)
stem
возвращает компонент пути основы (имя файла без окончательного расширения)
(публичный член-функция)
replace_extension
заменяет расширение
(публичный член-функция)
has_extension
проверяет, является ли соответствующий элемент пути непустым
(публичный член-функция)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/filesystem/path/extension

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API