所以我有以下问题:我需要总结特定目录中所有文件的字节大小,这包括子目录的大小,因为在我的情况下它们实际上可以增加大小。
但是如果我们在包含文件和子目录的目录上运行这段代码,看起来像这样:
#include <filesystem>
#include <iostream>
#include <cstdint>
int main(void)
{
std::uintmax_t result = 0;
for (const auto& path : std::filesystem::directory_iterator("."))
{
result += std::filesystem::file_size(path)
}
std::cout << "Total size is: " << result << std::endl;
return 0;
}
然后你会得到一个错误,你正在尝试获取目录的文件大小。如果您在 macOS 或 Linux 上运行它,至少使用 Clang++ 10 或 11 进行编译。现在根据std::filesystem::file_size 上的 Cppreference获取目录的大小取决于实现。但是,在我看来,这很奇怪,因为 file_size 基本上只是“包装”统计信息,因此应该可以在目录上完美运行,至少在 Linux、*BSD 和 macOS 上是这样。
因此,任何人都可以启发我为什么将其留给实现,我可以访问 C++ 标准并且找不到充分的理由。