名前空間
変種
操作

std::filesystem::path::extension

提供: cppreference.com
< cpp‎ | filesystem‎ | path
 
 
 
 
path extension() const;
(C++17以上)

*this の汎用形式視点のファイル名部分の拡張子を返します。

汎用形式のパスの filename() 部分がピリオド (.) を含み、特別なファイルシステム要素ドットまたはドット-ドットでなければ、拡張子は、最も右のピリオドで始まり (ピリオドを含みます)、そのパス名の最後までの、部分文字列です。

ファイル名の最初の文字がピリオドの場合、そのピリオドは無視されます (".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';
}

出力:

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

[編集] 関連項目

パスのファイル名部分を返します
(パブリックメンバ関数) [edit]
パスの語幹部分を返します
(パブリックメンバ関数) [edit]
拡張子を置換します
(パブリックメンバ関数) [edit]
対応するパス要素が空でないかどうか調べます
(パブリックメンバ関数)