dir内のすべてのファイルを列挙してから、subdirに移動して同じことを行う必要があります。
理想的には、アルゴリズムはlinux macos [windows(obsolete)nomore]でも同じように機能するはずです。
更新:VFSを認識しましたが、dirを列挙するためにVFSを使用することに戸惑っています。なにか提案を ?dirをファイルとして開く必要がありますか?
POSIX.1-2001は、、、opendir
およびreaddir
、、、、およびをclosedir
指定しseekdir
ます。プラットフォームには、それらの使用方法を説明するマニュアルページがある可能性があります。rewinddir
telldir
伝えられるところによると、これらはMSライブラリによって直接サポートされておらず、代わりに、あちらで使用することを好んでFindFirst
いるFindNext
ようですが、上記を提供するエミュレーションライブラリがいくつかあると思われます。私はWin32にあまり詳しくないので、その部分を自分でソートする必要があります。
GCCを使用している場合は、ファイルシステムインターフェイスを試すことができます。ここをチェックしてください:GNUファイルシステムインターフェースの参照
Linux、Windows、および MacOS に移植可能なBoost Filesystemを使用できます。recursive_directory_iteratorを使用すると、名前が示すように、ディレクトリを再帰的に反復できます。
#include "boost/filesystem.hpp"
#include <iostream>
int main()
{
namespace fs = boost::filesystem;
fs::recursive_directory_iterator end;
for ( fs::recursive_directory_iterator dir("./"); dir != end; ++dir )
{
std::cout << *dir << std::endl;
}
}
Linuxではgetdents()またはreaddir()を使用する必要があります