我想获取根目录下特定文件夹的位置。
例如,我有一个根目录为C:\Dummy
,我在这个文件夹中有一个子目录:
C:\假人\ 10 \ 20 \ MyFolder文件
现在我想在目录MyFolder
下获取子目录C:\Dummy
的路径。
我将编写一个函数,我将传递两个输入:
1)“根文件夹”即C:\Dummy
2)“子目录名称”,即MyFolder
。
String fun(string RootFolderPath, string subDirName)
{
//if any of the sub directories consists of `subDirName` then return the
//path
return subDirPath;
}
有没有办法实现这个目标?
请帮我解决这个问题。
答案 0 :(得分:0)
使用实验性filesystem标准库,可按如下方式完成:
#include <experimental\filesystem>
namespace fs = std::experimental::filesystem;
string search_path(const string &root, const string &search)
{
fs::path root_path(root);
fs::path search_path(search);
for (auto &p : fs::recursive_directory_iterator(root_path))
{
if (fs::is_directory(p.status()))
{
if (p.path().filename() == search)
return p.path().string();
}
}
return "";
}
否则,您必须使用像FindFirstFile()和FindNextFile()这样的特定于file management functions的windows.api来进行遍历。或者也许是Boost filesystem库。
答案 1 :(得分:0)
通过连接 RootFolderPath 和 subDirName 来创建完整的目录路径(不要忘记插入&#34; \&#34;介于两者之间)。并使用以下2个Windows API:
auto bDirExists = (::PathFileExists(path) && ::PathIsDirectory(path));