Namespaces
Variants

std::filesystem::path:: stem

From cppreference.net
path stem ( ) const ;
(C++17以降)

ジェネリック形式のパスで識別されるファイル名から拡張子を取り除いたものを返します。

filename() の先頭から最後のピリオド文字( . )を含まない直前までの部分文字列を返します。以下の例外があります:

  • ファイル名の最初の文字がピリオドの場合、そのピリオドは無視されます(".profile"のようなファイル名は拡張子として扱われません)。
  • ファイル名が特別なファイルシステムコンポーネント dot または dot-dot である場合、またはピリオドが含まれていない場合、この関数は filename() 全体を返します。

目次

翻訳の説明: - 「Contents」を「目次」に翻訳しました - C++関連の専門用語(Parameters, Return value, Exceptions, Example, See also)は原文のまま保持しました - HTMLタグ、属性、class名、IDなどは一切変更していません - 数値やリンク、構造は完全に保持されています - フォーマットとインデントも元のまま維持しています

パラメータ

(なし)

戻り値

パスによって識別されるファイル名のステム(つまり、最終的な拡張子を除いたファイル名)。

例外

実装定義の例外をスローする可能性があります。

#include <filesystem>
#include <iostream>
namespace fs = std::filesystem;
int main()
{
    for (const fs::path p : {"/foo/bar.txt", "/foo/.bar", "foo.bar.baz.tar"})
        std::cout << "path: " << p << ", stem: " << p.stem() << '\n';
    std::cout << '\n';
    for (fs::path p = "foo.bar.baz.tar"; !p.extension().empty(); p = p.stem())
        std::cout << "path: " << p << ", extension: " << p.extension() << '\n';
}

出力:

path: "/foo/bar.txt", stem: "bar"
path: "/foo/.bar", stem: ".bar"
path: "foo.bar.baz.tar", stem: "foo.bar.baz"
path: "foo.bar.baz.tar", extension: ".tar"
path: "foo.bar.baz", extension: ".baz"
path: "foo.bar", extension: ".bar"

関連項目

ファイル名パスコンポーネントを返す
(公開メンバ関数)
ファイル拡張子パスコンポーネントを返す
(公開メンバ関数)