3

dir内のすべてのファイルを列挙してから、subdirに移動して同じことを行う必要があります。

理想的には、アルゴリズムはlinux macos [windows(obsolete)nomore]でも同じように機能するはずです。

更新:VFSを認識しましたが、dirを列挙するためにVFSを使用することに戸惑っています。なにか提案を ?dirをファイルとして開く必要がありますか?

4

4 に答える 4

4

POSIX.1-2001は、、、opendirおよびreaddir、、、、およびをclosedir指定しseekdirます。プラットフォームには、それらの使用方法を説明するマニュアルページがある可能性があります。rewinddirtelldir

伝えられるところによると、これらはMSライブラリによって直接サポートされておらず、代わりに、あちらで使用することを好んでFindFirstいるFindNextようですが、上記を提供するエミュレーションライブラリがいくつかあると思われます。私はWin32にあまり詳しくないので、その部分を自分でソートする必要があります。

于 2011-03-08T06:26:20.453 に答える
3

GCCを使用している場合は、ファイルシステムインターフェイスを試すことができます。ここをチェックしてください:GNUファイルシステムインターフェースの参照

于 2011-03-08T06:23:44.163 に答える
3

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;
    }
}
于 2011-03-08T07:11:45.637 に答える
1

Linuxではgetdents()またはreaddir()を使用する必要があります

于 2011-03-08T06:22:28.287 に答える