名稱空間
變體
操作

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 <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"

[編輯] 參閱

返回檔名路徑元件
(公共成員函式) [編輯]
返回主檔名路徑元件(不帶最終副檔名的檔名)
(公共成員函式) [編輯]
替換副檔名
(公共成員函式) [編輯]
檢查相應路徑元素是否不為空
(公開成員函式)