Boost.Filesystem 和 C++ 标准文件系统库有多相似?

2024-02-18

我需要一个文件系统库与支持 C++11 的编译器或支持 C++14 的编译器一起使用 - 所以它不能来自 C++17。

现在,我知道进入 C++17 的文件系统库是基于 Boost::Filesystem 的;但是 - 它们是否足够相似,足以让我使用 Boost 库,然后在稍后无缝切换到标准版本,而无需进行更多更改,例如using陈述?或者两者之间是否存在(微小/显着)差异?我知道对于以下情况variant,Boost 和标准库版本差别很大。


有很多差异。我相信,有些是从未传播过的 Boost 更改。例如,没有path.filename_is_dot()查询(如下所述,它在以下情况中用处不大:std::filesystem反正)。

在这方面还有一些最新消息:

  1. Support for non-POSIX-like filesystems http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0430r2.pdf:
    • 指定字符串是操作系统本机的还是类似 POSIX 的(或者让实现来决定,这仍然是默认值)
    • 实现可以定义其他文件类型(除了常规、目录、套接字、etc.)
    • 一个实现可以定义file_size对于目录或设备文件
  2. filename(), normalization, and relative/absolute conversions redefined http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0492r2.html (examples for POSIX):
    • path("foo/.").lexically_normal()=="foo/"(与Boost相反)
    • path("foo/").filename()=="" (is path(".")在升压中)
    • remove_filename()留下尾部斜杠,因此是幂等的(它分配parent_path()在升压中)
    • path(".profile").extension()==""(是Boost中的全名)
    • path分解和组合可以保留诸如备用数据流名称 https://en.wikipedia.org/wiki/NTFS#Alternate_data_streams_.28ADS.29通常是看不见的
    • path("foo")/"/bar"=="/bar" (is path("foo/bar")在Boost中),它允许与其他文件名(绝对或相对)组合相对文件名并取代Boost的absolute()
    • Boost's system_complete()(只需要一个参数)被重命名为absolute()
    • canonical()因此只需要一个参数(固定在DR http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0699r0.html#2956)
    • lexically_relative()把手..和根元素正确
    • permissions()需要更多参数(Boost 将它们组合成位掩码)

请注意,Boost.Filesystem v4 是正在开发中 https://github.com/boostorg/filesystem/commits/v4并且应该与 C++17 兼容(但因此在许多方面与 v3 不兼容)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Boost.Filesystem 和 C++ 标准文件系统库有多相似? 的相关文章

  • MVC Core IActionResult 含义

    什么是IActionResult 我尝试查看 MSDN 和其他网站 但需要通用 常见 易于理解的答案 MSDN IActionResult https learn microsoft com en us dotnet api microso
  • C++ 模板中的名称查找

    我有一些 C 代码 如果没有 fpermissive 选项 就无法再编译 这是我无法分享的专有代码 但我认为我已经能够提取一个简单的测试用例来演示该问题 这是 g 的输出 template eg cpp In instantiation o
  • 将指针转换为浮点数?

    我有一个unsigned char 通常 这指向一块数据 但在某些情况下 指针就是数据 即 铸造一个int的价值unsigned char 指针 unsigned char intData unsigned char myInteger 反
  • C++ 中的单例和抽象基类

    最近我遇到了关于实现 Singleton 但涉及抽象基类的问题 假设我们有这样的类层次结构 class IFoo it s ABC class Foo public IFoo 我们的单例类定义如下 template
  • 使用静态类型代替变量

    当您的项目不使用命名空间时 有什么方法可以告诉编译器使用静态类型而不是变量吗 例如 我有一个名为 User 的类 它具有各种静态和非静态方法 假设调用了其中一个静态方法GetUser 我想称之为User GetUser 方法来自一个方法 该
  • 正则表达式删除某些字符周围不需要的空格

    我正在尝试从 JavaScript 文件中删除一些不需要的空格 并在将文件发送到客户端之前使用 C 和 Regex 组合文件 我有一个JavascriptHandler处理 js 文件 效果很好 这是我用来 打包 JavaScript 的函
  • C++ 中的 Java ArrayList [重复]

    这个问题在这里已经有答案了 在Java中我可以做 List
  • 控制器中的异常处理 (ASP.NET MVC)

    当您自己的代码抛出异常并从控制器中的操作调用时 应该如何处理 我看到很多最佳实践的例子 其中根本没有 try catch 语句 例如 从存储库访问数据 public ViewResult Index IList
  • 获取给定EntityType的导航属性

    我在用VS2010 EF4 0 需要如下功能 private string GetNaviProps Type entityType eg typeof Employee NorthwindEntities en new Northwind
  • 在 ncurses 中使用退格键

    我设置了一个简单的 ncurses 程序 它使用 getch 一次读取一个字符并将它们复制到缓冲区中 我遇到的问题是检测到按下退格键 这是相关代码 while buffer i c getch EOF i if c n break else
  • std::string 在 Visual Studio 上的具体行为?

    我有一个项目需要读取 写入大文件 我决定使用 ifstream read 将这些文件一次性放入内存中 放入 std string 中 这似乎是在 C 中执行此操作的最快方法 http insanecoding blogspot com 20
  • Active Directory UserPrincipal.Current.GetGroups() 返回本地组而不是 Web 服务器上的组

    以下内容在我的本地开发盒上效果很好 但是 当我将其移动到网络服务器时 它失败了 甚至不会记录错误 public static List
  • 如何使用 libpq 获取双精度值?

    The examples http www postgresql org docs 9 3 interactive libpq example htmllibpq 文档中展示了如何通过将整数值转换为主机字节序表示来获取整数值 我很好奇必须做
  • 我应该使用多个 HttpClient 来进行批量异步 GET 请求吗?

    我有一个场景 我需要在尽可能短的时间内发出大量 GET 请求 想想大约 1000 个 我知道通常最好保留一个客户端并尽可能重用它 Create Single HTTP Client HttpClient client new HttpCli
  • 如何分析 VSCode 中函数的性能

    我用 C Golang 编写了一个程序 如何找到占用最高 CPU 周期的函数 目的是提高正在执行的程序的性能 2021 年 10 月 金香儿哈娜 https github com hyangah宣布 tweet https twitter
  • 如何使用简历实现一个“一网打尽”的异常处理程序?

    我想知道我怎样才能写一个抓住他们全部应用程序级别的异常处理程序将为用户提供恢复应用程序流程的选项 如果您正在运行 Windows 窗体应用程序 将处理程序添加到Application ThreadException event
  • C/C++ 通过 Android NDK 在 JNI 中看不到 Java 方法

    我正在尝试从使用 NDK 构建的 C 类文件调用 Java 方法 它不断抛出常见的 未找到非静态方法 错误并导致整个 Android 应用程序崩溃 下面的代码片段 有些东西可能不需要 但我按原样保留它们 因为焦点 问题在于refreshJN
  • 在代码中而不是 XAML 中呈现 UserControl

    我想用RenderTargetBitmap将 UserControl 呈现为位图 而无需为其编写 XAML 当我这样做时 我得到一张空白图像 我是否错过了关键的一步 ValTool Controls VideoFisheyeOverlayC
  • 在类中使用 std::chrono::high_resolution_clock 播种 std::mt19937 的正确方法是什么?

    首先 大家好 这是我在这里提出的第一个问题 所以我希望我没有搞砸 在写这篇文章之前我用谷歌搜索了很多 我对编码 C 很陌生 我正在自学 考虑到有人告诉我 只为任何随机引擎播种一次是一个很好的做法 我在这里可能是错的 什么是正确 最佳 更有效
  • 什么时候使用静态库需要头文件?

    如果我在 Linux 中用 C 创建一个静态库并生成 a 文件 我 或其他人 如何使用该库 例如 我的库定义了一个类 我认为仅仅提供 a 文件是不够的 还需要提供头文件 我如何知道 a 文件必须提供哪些头文件 例如 我是否需要提供我的库代码

随机推荐

  • 使用RabbitMQ(Java客户端),有没有办法确定消费期间网络连接是否关闭?

    我在 RHEL 5 3 上使用 Java 客户端使用 RabbitMQ 我有 2 个节点 机器 Node1 正在使用 Java 帮助器类 QueueingConsumer 消费 Node2 上队列中的消息 QueueingConsumer
  • 在 R SF 中交叉大型空间数据集

    我有两个空间数据集 一个数据集包含许多多边形 总共超过 150k 指定不同的特征 如河流 植被 另一个数据集包含更少的指定不同区域的多边形 500 我需要将这两个数据集相交以获得不同区域的特征 我可以根据不同的特征对第一个数据集进行子集化
  • 需要从汇编中的字符串中删除所有非字母元素

    通过编写此汇编代码 我无法使用此选项来删除非字符字母 它将遍历字符串并进行所有比较 然后显示相同的字符串 且不删除任何非字符 我正在尝试将字母字符放入 tempString 中 然后将其移动到 edx 进行显示 它接受一个字符串并删除所有非
  • 我的代码是否阻止目录遍历?

    来自 Python WSGI 应用程序的以下代码片段可以安全地进行目录遍历吗 它读取作为参数传递的文件名并返回指定的文件 file name request path params file file open file name rb m
  • Clojure 应用映射和关键字参数销毁

    考虑具有以下签名的函数 defn make widget keys x y or x 10 y 20 将映射传递给函数的最佳方法是什么 例如 make widget x 100 or make widget y 200 x 0 我目前想到的
  • 正则表达式来验证逗号分隔的电子邮件地址?

    我需要验证电子邮件地址 可以是单个或多个以逗号分隔的地址 在我在正则表达式验证器中使用如下表达式之前 string exp w w w w w w 它正在验证多个或一个电子邮件地址 但同样的表达式在 C 中没有验证 它也表示对无效地址有效
  • IIS7-请求过滤模块配置为拒绝超过请求内容长度的请求

    我想上传图像 它在我的机器上运行良好 但是当我将我的网站放在 IIS7 服务器上供公众使用时 我无法上传任何内容 Error 请求过滤模块 用于拒绝以下请求 超过请求内容长度 最可能的原因 在Web服务器上配置请求过滤以拒绝请求 因为内容长
  • 如何为编辑操作指定 devise_parameter_sanitizer?

    我已将 Devise 添加到我的 Rails 4 应用程序中 并成功将用户名等添加到我的用户模型中 此外 我可以使用惰性方式存储这些字段 即 class ApplicationController lt ActionController B
  • libGDX:用一些枢轴打结的吊绳

    我正在尝试在 libGDX 中制作一根在其下端有一些物体的悬挂绳 绳子应该是这样的Box2D中的挂绳 http www emanueleferonato com 2009 10 05 basic box2d rope 我做了很多研究 lib
  • 如何让外部合并工具在 Linux 上与 svn 一起工作?

    如何获得基于 GUI 的合并工具以在 Linux 中使用命令行 SVN 我知道有很多选项 例如 meld svn Diff 等 所有这些都需要一个帮助程序脚本来允许 svn 在冲突解决期间调用外部程序 我按照给出的说明进行操作here ht
  • 将 WebRTC 与 WebWorker 结合使用

    我有兴趣将 webrtc 与 webworker 一起使用 是否可以 我尝试了 但没有成功 因为它没有找到 窗口 根据规格 1 https w3c github io mediacapture main dom navigator 2 ht
  • Apple 无法识别 imgur 的 HTTPS

    我有多个来自 imgur 的 HTTPS 链接 例如https i stack imgur com 9nSMi jpg https i stack imgur com 9nSMi jpg 我使用它作为我的原型应用程序的背景之一 但每当我在
  • WPF ComboBox...如何设置.Text 属性?

    有没有办法设置 Text直接使用 Wpf ComboBox 控件的属性吗 我的组合框绑定到List
  • 如何组合 Raphael javascript 库中的对象?

    抱歉问了一个很长的问题 但是就这样吧 我正在尝试修改此处演示周围的拖动形状 http raphaeljs com graffle html http raphaeljs com graffle html 该演示运行良好 我想做的是将文字放入
  • 在 ASP.Net 菜单中突出显示选定的选项卡

    我试图用不同的颜色突出显示 ASP NET 菜单中选定的选项卡 做到这一点似乎很简单 但首先我无法使其工作 其次我到目前为止找不到一个好的工作示例 ASP HTML div class clear hideSkiplink div
  • Firebase:部署到托管后仍然是旧版本,如何?

    我收到了一个在 firebase 上托管的相当原始的 React 应用程序 由其他人开发 进行维护 现在奇怪的事情发生了 我更改文件的内容 甚至简单的文本更改 运行部署 托管 我在 firebase 控制台中看到部署成功 仍然 页面内容仍然
  • 为独立应用程序创建 Homebrew 公式

    我正在尝试为不需要编译的应用程序创建一个自制公式 我尝试过浏览公式食谱 但我缺少一些使事情正常工作的东西 下面是我使用更通用文件名的用例 容器内部有两个文件 一个是应用程序的脚本 另一个是手册页文件 我们将使用以下文件名来保持通用 myap
  • 如何有条件地渲染 f:selectItem 标签?

    如何指定条件渲染
  • Python:setup.py Egg_info 失败,错误代码为 1

    我已经将 Python 2 7 x 更新到 3 6 但当我尝试安装任何软件包时仍然收到此消息 示例 Flask Kivy 命令 python setup py Egg info 失败 错误代码为 1 C Users Dev AppData
  • Boost.Filesystem 和 C++ 标准文件系统库有多相似?

    我需要一个文件系统库与支持 C 11 的编译器或支持 C 14 的编译器一起使用 所以它不能来自 C 17 现在 我知道进入 C 17 的文件系统库是基于 Boost Filesystem 的 但是 它们是否足够相似 足以让我使用 Boos