近一年前,我使用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());这是有效的,但我认为这一切肯定不是我使用它的正确方式。不管怎样,我只是想看看有没有人能给我点建议。
发布于 2012-05-28 12:19:45
您的代码看起来是正确的。
您可以避免像这样的几个变量声明:
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中,您可以使用lambda进一步改进循环:
for_each(directory_iterator("path"), directory_iterator(), [](const path& p)
{
// use p
});https://stackoverflow.com/questions/10778502
复制相似问题