c ++:如何获取不带文件名的文件路径的子字符串

时间:2018-10-29 15:33:51

标签: c++ stdstring

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

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

我想获取文件夹路径

例如:    C:\ folder1 \ folder2 \。

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

但是,这也省略了最后一个\\

2 个答案:

答案 0 :(得分:1)

如果您有权使用增强功能,请使用:

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

以及C ++ 17:

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

答案 1 :(得分:1)

  • 使用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来构建父路径。