【问题标题】:What is the boost way to determine if the given path contains a path delimiter?确定给定路径是否包含路径分隔符的增强方法是什么?
【发布时间】:2012-02-16 04:12:24
【问题描述】:

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

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

谢谢。

编辑

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

【问题讨论】:

    标签: c++ boost path


    【解决方案1】:

    你不能。

    但是你真的想要吗?例如 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";
    

    【讨论】:

    • @mark:你的问题没有变得更清楚。您的意思是“如何检查路径是否具有多个路径元素”?
    • 为什么不呢?走一条路。如果它包含路径分隔符或驱动器规范,那么它对我不利。例如,这些都是错误的输入——“c:aaa”、“aaaa\\”、“\\aaa”。
    • @mark: 'good' 和 'bad' 在数学上没有很好的定义。查看编辑。
    猜你喜欢
    • 2016-10-18
    • 2017-03-10
    • 1970-01-01
    • 1970-01-01
    • 2013-07-08
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 2011-02-05
    相关资源
    最近更新 更多