Spec-Zone.ru › C++

std::filesystem::path::extension

path extension() const;
(начиная с C++17)

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

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

Если первый символ имени файла — точка, эта точка игнорируется (имя файла вроде ".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/cpp/filesystem/path/extension

Spec-Zone.ru

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