1

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

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)。

我想检测像\(windows) 或\\(windows) 或/Linux 上的向上跳跃。来自手册的引用:在 Windows 上, path("/foo").is_absolute() 返回 false。恕我直言,这是非常科学的,但没用。我的主要目标是防止向上引用,而无需手动访问字符,也无需提升访问 FS。(如果我必须手动触摸任何字符,我宁愿一起编写自己的路径实用程序。)

我没有找到一个可靠的概念来检测驱动器根引用。我也尝试过提升文档和谷歌。

4

1 回答 1

1

尝试使用规范: http: //www.boost.org/doc/libs/1_50_0/libs/filesystem/doc/reference.html#canonical

于 2012-08-08T09:27:00.587 回答