ein*_*ica 24 c++ c++-standard-library boost-filesystem c++11 c++17
我需要一个文件系统库,用于支持C++ 11的编译器或支持C++ 14的编译器 - 所以它不能来自C++ 17.
现在,我知道进入C++ 17的文件系统库是基于Boost :: Filesystem的; 但是 - 它们是否足够相似,我可以使用Boost库,然后在以后无缝切换到标准版本,而不会更改,比如using声明?或两者之间是否存在(轻微/重大)差异?我知道,对于这种情况variant,Boost和标准库版本有很大不同.
Dav*_*ing 15
有许多不同之处.我相信,有些人是从未传播的促进变革.例如,没有path.filename_is_dot()查询(如下所述,它无论如何都不太有用std::filesystem).
在这方面还有一些最新消息:
file_size目录或设备文件filename(),规范化和相对/绝对转换重新定义(POSIX的示例):
path("foo/.").lexically_normal()=="foo/" (与Boost相反)path("foo/").filename()==""(path(".")在Boost中)remove_filename()留下尾随斜杠,因此是幂等的(它指定parent_path()了Boost)path(".profile").extension()=="" (是Boost中的全名)path分解和组合可以保留通常不可见的备用数据流名称path("foo")/"/bar"=="/bar"(path("foo/bar")在Boost中),它允许与其他人(绝对或相对)组成相对文件名并替换Boostabsolute()system_complete()(只接受一个参数)被重命名为absolute()canonical()因此只需要一个参数(在DR中修复)lexically_relative()句柄..和根元素正确permissions() 需要更多参数(Boost将它们组合成一个位掩码)请注意,Boost.Filesystem v4 正在开发中,并且应该与C++ 17兼容(但因此在许多方面与v3不兼容).
警告:这个答案并没有反映C++ 17最终确定之前的几个最后更改.请参阅@ DavisHerring的回答.
升压文件系统插入器和提取使用&作为转义字符"和&.
该标准将使用std::quoted(\默认情况下使用)进行转义",而这又用于\\转义\,请参阅此参考.
这可能是他们之间唯一的区别.
这种差异的原因可以在N3399找到
| 归档时间: |
|
| 查看次数: |
3998 次 |
| 最近记录: |