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