C ++:如何判断文件的路径是否以给定路径开头

时间:2012-03-09 15:00:20

标签: c++ c

我有一条路径,例如名为

  

/我的/路径/测试/ mytestpath

,我想判断它是否以给定路径开头,例如

  

/我/路径

4 个答案:

答案 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)

  1. 从头开始对子文件(/ my / path / test / mytestpath)的字符串(/ my / path)的长度进行子串。
  2. 检查两个字符串是否相等。

答案 3 :(得分:1)

您可以对较短字符串中的字符数进行字符串比较。

字符匹配的事实并不意味着它是一个子路径,因为你需要检查较长字符串中的下一个字符是否是'/'

在C中,您可以使用strncmp(),它占用一定的字符长度。

在C ++中,您可以使用相同或字符串比较功能。 find()函数适用于此,但还要记住检查主路径中的下一个字符是否为目录分隔符。

你可以“标记”你的路径,但这可能不值得。