小编dlw*_*dlw的帖子

为什么std :: filesystem提供了这么多非成员函数?

例如,考虑一下 file_size.要获取我们将要使用的文件的大小

std::filesystem::path p = std::filesystem::current_path();
// ... usual "does this exist && is this a file" boilerplate
auto n = std::filesystem::file_size(p);
Run Code Online (Sandbox Code Playgroud)

这没有什么不对,如果它是普通的C,但已经被教导C++是一种OO语言[我知道这是多范式,向我们的语言律师道歉:-)]只是感觉如此...... 势在必行(对我来说不好意思,我已经开始期待对象了

auto n = p.file_size();
Run Code Online (Sandbox Code Playgroud)

代替.对于其他功能也是如此,例如resize_file,remove_file甚至可能更多.

你知道为什么Boost std::filesystem选择这种命令式而不是对象式的任何理由吗?有什么好处?提升提到了规则(在最底层),但没有理由.

我正在考虑固有问题,例如ps state after remove_file(p)或错误标志(带有附加参数的重载),但这两种方法都没有解决这些问题.


您可以使用迭代器观察类似的模式,现在我们可以(应该?)begin(it)而不是it.begin(),但在这里我认为理由是更符合非修改next(it)等等.

c++ boost-filesystem c++17 std-filesystem

10
推荐指数
2
解决办法
518
查看次数

标签 统计

boost-filesystem ×1

c++ ×1

c++17 ×1

std-filesystem ×1