std::filesystem::path::extension

来自cppreference.com
< cpp‎ | filesystem‎ | path
 
 
 
 
path extension() const;
(C++17 起)

返回 *this 的通用格式视图的文件名的扩展名。

若通用格式路径的 filename() 组分含有句号( . ),且不是特殊文件系统元素 dotdot-dot 之一,则扩展名是从最右的句号开始(含句号)到路径名尾的子串。

若文件名的首个字符是句号,则忽略该句号(类似 ".profile" 的文件名不被当做扩展名)

若路径名是 ... ,或若 filename() 不含有 . 字符,则返回空路径。

实现可以为添加了附加元素到扩展名的文件系统定义附加行为(例如作为另一种数据流或带分区数据集的名称)。

参数

(无)

返回值

当前路径名的扩展名,或若无扩展名则为空路径。

异常

可能会抛出由实现定义的异常。

注解

此函数返回的扩展名包含点,令程序可以分辨以点结束的文件(函数返回 "." )和无扩展名的文件(函数返回 ""

在非 POSIX 系统上,可能有 p.stem()+p.extension() != p.filename() ,即使通用格式版本是相同的。

示例

#include <iostream>
#include <filesystem>
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'
        << fs::path("/foo/bar.txt.bak").extension() << '\n'
    ;
 
}

输出:

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

参阅

返回文件名路径组分
(公开成员函数)
返回主干路径组分
(公开成员函数)
替换扩展名
(公开成员函数)
检查对应路径元素是否非空
(公开成员函数)