- filesystem[meta header]
- std::filesystem[meta namespace]
- path[meta class]
- function[meta id-type]
- cpp17[meta cpp]
path& remove_filename();
パスからファイル名を除去する。
現在のパスから、filename()
関数で取得できるファイル名部分を削除する。
ファイル名を持たないパスに対しては、なにもしない。
*this
!has_filename()
- has_filename()[link has_filename.md]
#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;
}
}
- remove_filename()[color ff0000]
"foo/bar" : "foo/"
"foo/" : "foo/"
"/foo" : "/"
"/" : "/"
#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;
}
}
- remove_filename()[color ff0000]
"foo/bar" : "foo/"
"foo/" : "foo/"
"C:/foo" : "C:/"
"C:/" : "C:/"
- C++17
- Clang:
- GCC: 8.1 [mark verified]
- Visual C++: 2017 Update 7 [mark verified]