skip to Main Content

I have this piece of code

auto path = std::filesystem::path("/root/home/../opt/.");

I had tried std::filesystem::absolute() but then realized it is for something else than the reasult I want

My question is how can i convert that relative path to the absolute path so that the reasult will be "/root/opt/".

I am using c++17 on Debian g++-9

2

Answers


  1. Use std::filesystem::canonical to turn the path into an absolute path with all .. removed (reference):

    auto path = std::filesystem::canonical("/root/home/../opt/.");
    

    Gives you:

    "/root/opt"
    
    Login or Signup to reply.
  2. You can also use from this function.

     std::cout << std::filesystem::path("/root/home/../opt/.").lexically_normal()    << std::endl;
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search