ルートディレクトリでhas_parentがtrueになるの解釈違いだった
— wata_d (@wata_d) 2021年10月27日
#include <filesystem> namespace fs = std::filesystem; int main() { fs::path path(R"(C:\Users\Public\Documents)"); while (path.has_parent_path()) { std::cout << path.stem() << std::endl; path = path.parent_path(); } return 0; }
みたいなコードを書くと無限ループになるんですね。なんか、ルートディレクトリはさらに上にはいけないからhas_parentはfalseになると思っちゃったんですよね。
fs::path path(R"(C:\Users\Public\Documents)"); while (path != path.root_path()) { std::cout << path.stem() << std::endl; path = path.parent_path(); }
みたいにするのかな。
Pythonのpathlibも同じでした。
from pathlib import Path print(Path(r"C:\\").parent) # => C:\