【问题标题】:boost::filesystem v3 - correct case of pathboost::filesystem v3 - 正确的路径大小写
【发布时间】:2011-03-15 19:33:32
【问题描述】:

嗨 有没有一种有效的方法来纠正给定 Windows 路径的情况?

fs::path dir("c:/winDOWS"); --> C:/Windows?

(没有 Windows-API!)

【问题讨论】:

  • 你的意思是即使在windows上也不使用windows-api,还是你的意思是使用一些抽象库以便代码在其他平台上运行不变?

标签: c++ boost boost-filesystem


【解决方案1】:

如果没有 windows api,就不可能知道正确的大小写。常见的 windows 文件系统不区分大小写并保留大小写。

执行此操作的 windows api 方法是 GetFullPathName

【讨论】:

  • 我不能同意。知道我使用boost的目录迭代器并进行不区分大小写的比较以验证它是否是相同的路径......源代码也在linux上运行,我看不出有任何理由为此目的使用win api.. .
  • Boost.Filesystem也使用了Windows API,它只是封装了它,如果某个函数没有封装器,你应该直接使用那个函数。
  • 根据链接的文档:“..此函数不会验证生成的路径和文件名是否有效,或者他们是否看到相关卷上的现有文件...”。所以 GetFullPathName 不是正确的答案!我自己很困惑,所以决定让其他人知道当前的最佳答案是不正确的。
【解决方案2】:

自从我来到这里寻找同样的东西,我想我会省去别人的谷歌。

可以在in this stackoverflow thread 找到答案。

遗憾的是,这不是如何使用 boost 而是使用 Windows API 来实现的。但至少它可以工作,而上面提到的 API 没有。

【讨论】:

    猜你喜欢
    • 2011-02-15
    • 2015-02-12
    • 2012-04-27
    • 1970-01-01
    • 2010-09-28
    • 2016-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多