path& remove_filename();
概要
パスからファイル名を除去する。
効果
現在のパスから、filename()
関数で取得できるファイル名部分を削除する。
ファイル名を持たないパスに対しては、なにもしない。
戻り値
*this
事後条件
例
POSIXベースシステムでの例
#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
int main()
{
fs::path ps[] = {
"foo/bar", // ファイル名を含むパス (ディレクトリ区切り文字が残って "foo/" になる)
"foo/", // ディレクトリパス
"/foo", // ルートパス直下のファイルパス
"/" // ルートパスのみ
};
for (fs::path& p : ps) {
const fs::path before = p;
p.remove_filename();
std::cout << before << " : " << p << std::endl;
}
}
出力
"foo/bar" : "foo/"
"foo/" : "foo/"
"/foo" : "/"
"/" : "/"
Windowsでの例
#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
int main()
{
fs::path ps[] = {
"foo/bar", // ファイル名を含むパス (ディレクトリ区切り文字が残って "foo/" になる)
"foo/", // ディレクトリパス
"C:/foo", // ルートパス直下のファイルパス
"C:/" // ルートパスのみ
};
for (fs::path& p : ps) {
const fs::path before = p;
p.remove_filename();
std::cout << before << " : " << p << std::endl;
}
}
出力
"foo/bar" : "foo/"
"foo/" : "foo/"
"C:/foo" : "C:/"
"C:/" : "C:/"
バージョン
言語
- C++17
処理系
- Clang:
- GCC: 8.1 ✅
- Visual C++: 2017 Update 7 ✅