2017年に予想される新しい標準にはstd::filesystem
が追加されています。それを使用して、ディレクトリ内のファイル(サブディレクトリを含む)の数をどのように数えることができますか?標準でディレクトリ内のファイル数を数える方法は?
私たちが行うことができます知っている:
std::size_t number_of_files_in_directory(std::filesystem::path path)
{
std::size_t number_of_files = 0u;
for (auto const & file : std::filesystem::directory_iterator(path))
{
++number_of_files;
}
return number_of_files;
}
しかし、それはやり過ぎと思われます。よりシンプルで高速な方法が存在しますか?
[directory_iterator']の 'difference_type'のように見えますhttp://en.cppreference.com/w/cpp/experimental/fs/directory_iterator)は 'std :: ptrdiff_t'ですので、' size_t'が必要な場合は最初のキャストをキャストする必要があります。 – clcto
これらを短縮することができます: 'std :: distance(directory_iterator(path)、{});'と 'return std :: count_if(directory_iterator(path)、{}、std :: filesystem :: is_regular_file);' – ildjarn
'count_if'バージョンをテストしましたか?それはコンパイルされません。 'is_regular_file'には3つのオーバーロードがあります。 –