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

Boost FileSystems, need help understanding what I'm doing

本文关键字:了解 什么 帮助 文件系统      更新时间:2023-10-16

大约一年前,我使用boost文件系统编写了一个程序,现在我试图回去使用它作为参考,但我不确定代码到底是怎么回事,以及是否有更好的方法。

这是我为遍历目录所做的工作。

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());

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

你的代码看起来是正确的。

您可以避免使用几个变量声明,如下所示:

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