Namespaces
Variants

std::filesystem::path:: extension

From cppreference.net
path extension ( ) const ;
(начиная с C++17)

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

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

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

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

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

Содержание

Параметры

(нет)

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

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

Исключения

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

Примечания

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

В непозикс-системе возможно, что 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"

Смотрите также

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