提升文件系统,需要帮助了解我正在做什么

时间:2012-05-28 01:30:58

标签: c++ boost-filesystem

我差不多一年前使用boost文件系统编写了一个程序,现在我想回去使用它作为参考,但我不确定代码究竟发生了什么,如果可能的话更好的方法。

以下是我在迭代目录时所做的工作。

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

这会为我提供一个带有目录条目的向量,该目录条目位于“path”

目录中的所有文件和目录

然后我会将它们分为两个路径向量,一个用于文件,一个用于目录,使用is_regular_file。

我正在使用openAL,我必须进行这种类型的转换才能让事情发挥作用。

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

这很有用,但我认为这一切都不一定非常正确我如何使用它。无论如何,我只是想看看是否有人可以给我一些建议。

1 个答案:

答案 0 :(得分: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中,您可以使用lambdas进一步改进循环:

for_each(directory_iterator("path"), directory_iterator(), [](const path& p)
{
    // use p
});