回答
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".
}
可以对较短字符串中的字符数进行字符串比较。
是自身的字符匹配并不意味着它事实上是一个子路径,因为你需要检查的是,在较长的字符串的下一个字符是“/”
在C你可以使用STRNCMP ()需要一段字符。
在C++中,您可以使用相同或字符串比较函数。 find()函数将为此工作,但请记住还要检查主路径中的下一个字符是否为目录分隔符。
你可以“标记”你的路径,但这可能不值得。
需要额外检查+1(除非您确保较短路径以'/'结尾)。 – 2012-03-09 15:36:01
Boost.Filesystem可能是最健壮的解决方案。尝试是这样的:
bool isSubDir(path p, path root)
{
while(p != path()) {
if(p == root) {
return true;
}
p = p.parent_path();
}
return false;
}
+1。赵靖真的很想知道什么;目前的描述听起来像是他在解决问题的过程中被卡住了。 – MSalters 2012-03-09 15:48:28
根据你想要的行为,使用'equivalent'而不是'operator =='可能更好。 – 2012-03-09 15:57:42
- 1. 如何读取文本文件的路径,并在该路径
- 2. 给予在C#中的文件路径
- 3. 列出给定路径的文件夹的绝对路径 - shell
- 4. 查找给定路径的根路径
- 5. 存在给定路径的文件
- 6. 如何从给定文件夹路径获取文件夹路径?
- 7. 如何给$ http的文件路径
- 8. 如何将log4j.properties文件的路径更改为特定路径?
- 9. 文件路径路径
- 10. C#:如何获得Process.Start在给定文件时没有路径时将使用的可执行文件路径?
- 11. 解析给定的路径在C#
- 12. 获取给定路径的文件ID
- 13. c#不支持给定路径的格式。 UNC路径
- 14. 在给定路径找不到文件
- 15. 得到给定一个路径和文件名路径名
- 16. 如何更换文件路径,在该文件路径删除一些路径,并同时更换\到/
- 17. boost :: filesystem ::路径的Unicode文件路径?
- 18. 新的文件(路径)或class.getResourses(路径)?
- 19. 读/写文件与UNC路径 - 在C++
- 20. 获取路径/ FILNAME的路径,但该文件没有扩展
- 21. 路径变量:查找特定文件的文件夹路径
- 22. 如何在文件路径与模式
- 23. 从给定路径
- 24. 有路径的地图如何将tham与给定路径进行比较?
- 25. 如何指定flowconfig文件的路径?
- 26. 如何打开的文件的路径为路径的目录
- 27. 获取给定的路径
- 28. 给定的路径不支持C#
- 29. 如何确定给定路径是文件还是文件夹?
- 30. 如何在路径的给定部分下找到文件夹?
这听起来像一个简单的[有问题的开始(http://stackoverflow.com/questions/931827/stdstring-comparison-check-whether-string-begins-with-another-string )除非你打算扩展路径(例如'〜') – Joe 2012-03-09 15:02:40
即使没有扩展,它也不是那么简单,@Joe。文件*字符串*以'/ my/pa'开头,但*路径*不包含它。 – 2012-03-09 15:07:01
您可能需要首先对路径进行规范化,特别是在UNIX系统中使用特殊通配符和符号链接。 – CashCow 2012-03-09 15:07:26