名前空間
変種
操作

std::filesystem::path::replace_extension

From cppreference.com
< cpp‎ | filesystem‎ | path
 
 
 
 
path& replace_extension( const path& replacement = path() );
(C++17以降)

replacement を指定して拡張子を置き換えるか、replacement のデフォルト値を使用して拡張子を削除します。

まず、このパスにextension() がある場合、パス名の汎用形式ビューから削除されます。

次に、replacement が空でなく、ドット文字で始まらない場合、パス名の汎用形式ビューにドット文字が追加されます。

次に、replacementoperator+=(replacement) によるかのように追加されます。

目次

[編集] パラメータ

replacement - 置き換える拡張子

[編集] 戻り値

*this

[編集] 例外

実装定義の例外をスローする場合があります。

[編集] 注意

replacement の型は std::filesystem::path です。これはファイルシステム上のオブジェクトを表すことを意図していませんが、ファイルシステム文字エンコーディングを正しく考慮するためです。

[編集]

#include <filesystem>
#include <iomanip>
#include <iostream>
#include <utility>
 
int main()
{
    const int width1{18}, width2{11}; // columns' width
 
    std::cout << std::left << std::setw(width1) << "Path:"
              << std::setw(width2) << "Ext:" << "Result:\n";
    for (const auto& [p, e] : {
            std::make_pair("/foo/bar.jpg", ".png"),
            {"/foo/bar.jpg", "png"},
            {"/foo/bar.jpg", "."},
            {"/foo/bar.jpg", ""},
            {"/foo/bar.", "png"},
            {"/foo/bar", ".png"},
            {"/foo/bar", "png"},
            {"/foo/bar", "."},
            {"/foo/bar", ""},
            {"/foo/.", ".png"},
            {"/foo/.", "png"},
            {"/foo/.", "."},
            {"/foo/.", ""},
            {"/foo/", ".png"},
            {"/foo/", "png"}})
    {
        std::filesystem::path path{p}, ext{e};
        std::cout << std::setw(width1) << path << std::setw(width2) << ext;
        path.replace_extension(ext);
        std::cout << path << '\n';
    }
}

出力

Path:             Ext:       Result:
"/foo/bar.jpg"    ".png"     "/foo/bar.png"
"/foo/bar.jpg"    "png"      "/foo/bar.png"
"/foo/bar.jpg"    "."        "/foo/bar."
"/foo/bar.jpg"    ""         "/foo/bar"
"/foo/bar."       "png"      "/foo/bar.png"
"/foo/bar"        ".png"     "/foo/bar.png"
"/foo/bar"        "png"      "/foo/bar.png"
"/foo/bar"        "."        "/foo/bar."
"/foo/bar"        ""         "/foo/bar"
"/foo/."          ".png"     "/foo/..png"
"/foo/."          "png"      "/foo/..png"
"/foo/."          "."        "/foo/.."
"/foo/."          ""         "/foo/."
"/foo/"           ".png"     "/foo/.png"
"/foo/"           "png"      "/foo/.png"

[編集] 関連項目

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