2012-05-28 48 views
0

我近一年前使用boost文件系统编写了一个程序,现在我正在尝试返回并使用它作为参考,但我不确定究竟是什么继续执行代码,以及是否有更好的方法来执行此操作。Boost FileSystems,需要帮助了解我在做什么

这是我所做的迭代通过一个目录。

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

这让我与目录条目的向量为所有目录中的文件和目录的“路径”

那我就它们整理到的路径两个向量,一个用于文件,一个用于目录,使用is_regular_file。

我正在使用openAL,我将不得不做这种类型的转换才能使事情正常工作。

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

而这个工作,但我想这一切都不能是非常正确的,我如何使用它。无论如何,我只是想看看有没有人能给我一点建议。

回答

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 
}); 
+0

Thanks Thanks指挥官。 – MVTC