名前空間
変種
操作

std::filesystem::path::extension

From cppreference.com
< cpp‎ | filesystem‎ | path
 
 
 
 
パスの拡張子() 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"

[編集] 関連

ファイル名のパスコンポーネントを返します。
(public member function) [編集]
パスのステムコンポーネント(最後の拡張子を除いたファイル名)を返します。
(public member function) [編集]
拡張子を置き換えます。
(public member function) [編集]
対応するパス要素が空でないかどうかをチェックします。
(public member function)
English 日本語 中文(简体) 中文(繁體)