std::filesystem::path::replace_extension
来自 cppreference.com
< cpp | filesystem | path
path& replace_extension( const path& replacement = path() ); |
(自 C++17 起) | |
用 replacement 替换扩展名,或者当使用 replacement 的默认值时将其删除。
首先,如果此路径具有 extension(),则将其从路径名的通用格式视图中删除。
然后,如果 replacement 不为空且不以点字符开头,则将一个点字符追加到路径名的通用格式视图中。
然后,就像通过 operator+=(replacement) 一样,追加 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"
[编辑] 另请参阅
返回文件扩展名路径组件 (公有成员函数) | |
返回文件名路径组件 (公有成员函数) | |
返回茎路径组件(文件名,不包括最终扩展名) (公有成员函数) | |
检查相应的路径元素是否为空 (公有成员函数) |