安全地附加boost文件系统路径,检测向上引用

时间:2012-08-08 09:14:37

标签: c++ boost path

我想对这个主题有最好的预备。在实际做某事之前,我必须做一些路径魔术。

using namespace boost::filesystem;
path p = "apple"; // apple 
p /= "pear";      // apple/pear
p /= "..";        // apple/pear/..                      // apple
p /= "chicken";   // apple/pear/../chicken              // apple/chichken
p /= "..";        // apple/pear/../chicken/..           // apple
p /= "..";        // apple/pear/../chicken/../..        // .
p /= "..";        // apple/pear/../chicken/../../..     // ..
p /= "cow";       // apple/pear/../chicken/../../../cow // ../cow
path s = "\\tmp\\file857463.tmp"; // s.is_relative() is true on windows

在第一个//之后的每一行中,您都可以看到我打印时得到的内容。在第二个//之后,您可以看到我想要看到的内容(如果不同)

如果我想看到这种行为,我可以/应该做什么中间步骤,考虑到我肯定不想触摸文件系统。在最终表单出现后,我想测试当前目录中的参考点(仍然没有访问FS)。

我想在Linux上检测向上跳转,例如\(窗口)或\\(窗口)或/。从手册引用:在Windows上,路径(“/ foo”)。is_absolute()返回false 。这是恕我直言,非常科学,但没用。我的主要目标是防止向上引用而无需手动访问字符并且无需访问FS。 (如果我必须手动触摸任何字符,我宁愿一起编写自己的路径实用程序。)

我未能找到检测驱动器根引用的强大概念。我也试过提升文档和谷歌。

1 个答案:

答案 0 :(得分:1)