我有一条路径,例如名为
/我的/路径/测试/ mytestpath
,我想判断它是否以给定路径开头,例如
/我/路径
答案 0 :(得分:6)
Boost.Filesystem可能是最强大的解决方案。尝试类似:
bool isSubDir(path p, path root)
{
while(p != path()) {
if(p == root) {
return true;
}
p = p.parent_path();
}
return false;
}
答案 1 :(得分:1)
std::string::find()
返回找到字符串的索引,索引为0是字符串的开头:
std::string path("/my/path/test/mytestpath");
// This will check if 'path' begins with "/my/path/".
//
if (0 == path.find("/my/path/"))
{
// 'path' starts with "/my/path".
}
答案 2 :(得分:1)
答案 3 :(得分:1)
您可以对较短字符串中的字符数进行字符串比较。
字符匹配的事实并不意味着它是一个子路径,因为你需要检查较长字符串中的下一个字符是否是'/'
在C中,您可以使用strncmp(),它占用一定的字符长度。
在C ++中,您可以使用相同或字符串比较功能。 find()函数适用于此,但还要记住检查主路径中的下一个字符是否为目录分隔符。
你可以“标记”你的路径,但这可能不值得。