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"
См. также
| возвращает компонент пути, содержащий имя файла (открытая функция-член) |
|
| возвращает компонент пути, содержащий основу имени файла (имя файла без последнего расширения) (открытая функция-член) |
|
| заменяет расширение (открытая функция-член) |
|
| проверяет, не является ли соответствующий элемент пути пустым (открытая функция-член) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/filesystem/path/extension