🧩

std::filesystem::path は Windows には辛い

2020/09/24に公開

std::filesystem::path/ でパスを足せる。

auto p = std::filesystem::path("c:/windows") / "system32";
p.make_preferred();
std::cout << p.string() << std::endl;
c:\windows\system32

(´·ω·`) .oO( せや、その調子や )

(´·ω·`) .oO( じゃぁこれはどうや )

auto p = std::filesystem::path("c:") / "windows" / "system32";
p.make_preferred();
std::cout << p.string() << std::endl;
c:windows\system32

(´·ω·`) .oO( 最初の \ どこに行ってもうたん )

(´·ω·`) .oO( なら、これならどうや )

auto = std::filesystem::path("c:/") / "windows" / "system32";
p.make_preferred();
std::cout << p.string() << std::endl;
c:\windows\system32

(´·ω·`) .oO( まじか、セパレータ無いとあかんの )

(´·ω·`) .oO( じゃぁさ... )

p = std::filesystem::path("//server/share") / "dir";
p.make_preferred();
std::cout << p.string() << std::endl;

(´·ω·`) .oO( ひっついてしまうんやろ?せやろ? )

\\server\share\dir

(´·ω·`) .oO( ひっつかんのかい! )

(´·ω·`) .oO( じゃぁ先頭に / 付くかどうかで決まるんか? )

auto p = std::filesystem::path("/c:") / "windows" / "system32";
p.make_preferred();
std::cout << p.string() << std::endl;
\c:\windows\system32

(´·ω·`) .oO( うっ... うん... )

Discussion