0

私はほぼ 1 年前にブースト ファイルシステムを使用してプログラムを作成しましたが、今はそれを参照用に使用しようとしていますが、コードで何が起こっているのか正確にはわかりません。それをするために。

これは、ディレクトリを反復処理するために行ったことです。

vector <directory_entry> entry;
copy(directory_iterator("path"), directory_iterator(), back_inserter(entry));

これにより、「パス」にあるディレクトリ内のすべてのファイルとディレクトリのディレクトリ エントリを含むベクトルが得られます。

次に、is_regular_file を使用して、ファイル用とディレクトリ用の 2 つのパスのベクトルにそれらを並べ替えます。

私はopenALで作業していましたが、機能させるにはこのタイプの変換を行う必要がありました.

path fp = file[0]; //file a vector of directory_entry
string fps = fp.string();
buffer[0] = AlutCreateBufferFromFile(fps.c_str());

そしてこれはうまくいきましたが、私がそれをどのように使用しているかは、すべて正しくないと思います。とにかく、誰かが私にちょっとしたアドバイスをくれるかどうか知りたかっただけです。

4

1 に答える 1

2

コードは正しいようです。

次のようないくつかの変数宣言を回避できます。

buffer[0] = AlutCreateBufferFromFile(file[0].string().c_str());

ディレクトリエントリをにコピーすることを避けvector、ディレクトリエントリを直接繰り返すこともできます。

directory_iterator cur("path");
directory_iterator end;
while (cur != end)
{
    path p = *cur;
    ...  // use p
    ++cur;
}

C ++ 11では、ラムダを使用してループをさらに改善できます。

for_each(directory_iterator("path"), directory_iterator(), [](const path& p)
{
    // use p
});
于 2012-05-28T04:19:44.880 に答える