首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提升FileSystems,需要帮助理解我在做什么

提升FileSystems,需要帮助理解我在做什么
EN

Stack Overflow用户
提问于 2012-05-28 09:30:58
回答 1查看 96关注 0票数 0

近一年前,我使用boost文件系统编写了一个程序,现在我正试着回去参考一下,但我不确定代码到底发生了什么,以及是否有更好的方法来完成它。

下面是我在遍历目录时所做的工作。

代码语言:javascript
复制
vector <directory_entry> entry;
copy(directory_iterator("path"), directory_iterator(), back_inserter(entry));

这将为我获取一个向量,其中包含"path“目录中的所有文件和目录的目录条目

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

我使用的是openAL,我必须进行这种类型的转换才能使其正常工作。

代码语言:javascript
复制
path fp = file[0]; //file a vector of directory_entry
string fps = fp.string();
buffer[0] = AlutCreateBufferFromFile(fps.c_str());

这是有效的,但我认为这一切肯定不是我使用它的正确方式。不管怎样,我只是想看看有没有人能给我点建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-28 12:19:45

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

您可以避免像这样的几个变量声明:

代码语言:javascript
复制
buffer[0] = AlutCreateBufferFromFile(file[0].string().c_str());

您还可以避免将目录条目复制到vector中,而直接迭代目录条目:

代码语言:javascript
复制
directory_iterator cur("path");
directory_iterator end;
while (cur != end)
{
    path p = *cur;
    ...  // use p
    ++cur;
}

在C++11中,您可以使用lambda进一步改进循环:

代码语言:javascript
复制
for_each(directory_iterator("path"), directory_iterator(), [](const path& p)
{
    // use p
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10778502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档