std::filesystem::path::extension
< cpp | filesystem | path
path extension() const; |
(C++17 起) | |
返回 *this 的通用格式视图的文件名的扩展名。
若通用格式路径的 filename() 组分含有句号( .
),且不是特殊文件系统元素 dot 或 dot-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"
参阅
返回文件名路径组分 (公开成员函数) | |
返回主干路径组分 (公开成员函数) | |
替换扩展名 (公开成员函数) | |
检查对应路径元素是否非空 (公开成员函数) |