代码之家  ›  专栏  ›  技术社区  ›  Amir-Mousavi

C++:如何获取文件路径的子字符串,而不需要文件名[复制]

  •  -1
  • Amir-Mousavi  · 技术社区  · 6 年前

    这个问题已经有了答案:

    我有一个文件路径 std::string

    例如: C:\\folder1\\folder2\\file.dll

    我想得到文件夹路径

    例如: C:\文件夹1\文件夹2\。

    我试过 str=path.substr(0,path.find_last_of("\\/"))

    但是,这是最后一次 \\ 也。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Matthieu Brucher    6 年前

    如果可以使用boost,请使用:

    boost::filesystem::path(str).root_path();
    

    用C++ 17:

    std::filesystem::path(str).root_path();
    
        2
  •  1
  •   zdf    6 年前
    • 使用 std::filesystem::parent_path() :

      std::filesystem::path p{ "c:\\temp\\test.txt" };
      std::cout << "Parent: " << p.parent_path() << std::endl; // will output c:\temp
      
    • 如果你使用VS 2017, filesystem 在下面提供 experimental 命名空间:

      std::experimental::filesystem::path p{ "c:\\temp\\test.txt" };
      
    • 在windows下,您还可以组合 _splitpath _makepath 建立父路径。