确定给定路径是否包含路径分隔符的提升方式是什么?

时间:2012-01-22 12:23:27

标签: c++ boost path

我有boost::filesystem::path个实例x。我想确定x中是否包含任何路径分隔符。

现在,我可以在\\中查找/x.string(),但我对提升方式感兴趣,这意味着使用boost::filesystem库,如果可能的话。

感谢。

修改

  1. 让我缩小问题空间。我的工具永远不会在任何东西上运行,而是Windows操作系统。
  2. 我忘记了驱动器规格(c:等)。我也不要他们。

1 个答案:

答案 0 :(得分:4)

你不能。

但你真的想要吗?例如,c:a在Windows上包含两个路径元素c:a。为什么需要搜索路径分隔符?是什么让你认为所有平台上都存在这样的东西? OpenVMS中的路径分隔符是什么?例如。在:

[a.b.c]a.txt;12

士气:路径是人们习惯思考的更复杂的野兽。实际上boost::filesystem::path在POSIX路径之外的任何地方都不能很好地工作。但这是另一个故事。

编辑:假设您的问题是如何检查路径是否包含单个元素,那么答案就是计算元素数量:

boost::filesystem::path p = ...;
if(std::distance(p.begin(), p.end()) == 1)
    cout << "one element\n";