我想对这个主题有一个最好的指导。在实际做某事之前,我必须先做一些路径魔法。
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。(如果我必须手动触摸任何字符,我宁愿一起编写自己的路径实用程序。)
我没有找到一个可靠的概念来检测驱动器根引用。我也尝试过提升文档和谷歌。