std::filesystem::path::extension
來自 cppreference.com
< cpp | filesystem | path
path extension() const; |
(C++17 起) | |
返回 *this 的通用格式檢視的檔名部分的副檔名。
如果通用格式路徑的 filename() 部分包含一個句點(.
),並且不是特殊檔案系統元素 dot 或 dot-dot 之一,那麼“副檔名”是從最右邊的句點(包括句點)開始,直到路徑名末尾的子字串。
如果檔名的第一個字元是句點,則該句點將被忽略(像“.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"
[編輯] 參閱
返回檔名路徑元件 (公共成員函式) | |
返回主檔名路徑元件(不帶最終副檔名的檔名) (公共成員函式) | |
替換副檔名 (公共成員函式) | |
檢查相應路徑元素是否不為空 (公開成員函式) |