【问题标题】:std(boost)::filesystem::path number of componentsstd(boost)::filesystem::path 组件数
【发布时间】:2017-08-18 18:30:06
【问题描述】:

是否有任何惯用的方法来使用文件系统库获取路径中的组件数量?还是我错过了一些方法?

或者我是否必须打电话给parent_path(),直到我找到根目录?

【问题讨论】:

  • 您打算如何处理这么多组件?因为如果你要迭代它们,有更简单的方法。比如使用迭代器.

标签: c++ c++17 boost-filesystem


【解决方案1】:

size() 方法怎么样?

boost::filesystem::path p;
// fill p
std::cout << p.size() << std::endl;

会给你组件的数量。

另外path 迭代器不会遍历路径的字符串,而是遍历路径的组件。所以这也应该有效:

std::distance(p.begin(), p.end());

【讨论】:

  • 也许您知道,size() 是否存在于std:: 版本的文件系统中?不要立即在 cppreference 上看到它
  • @ledonter 其实我还没有使用过std 版本。但我经常使用boost 版本。我从来没有享受过专业使用 C++17 的乐趣。
  • 我认为 C++17 中没有size()。也许可以添加它;我的理解是,了解组件的数量有助于实现。但请注意,它会计算任何根名称、根目录和尾随的空组件...
  • 更重要的是:boost::filesystem::path::size()counts characters, not components
猜你喜欢
  • 2011-04-23
  • 2018-02-18
  • 2012-01-23
  • 1970-01-01
  • 2016-06-02
  • 1970-01-01
  • 2012-07-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多