0

我正在尝试模拟 ls 命令的行为。

我使用 dirent.h 库创建了一个简单的代码

    DIR *dir;
    dirent *pdir;
    dir=opendir(".");
    while((pdir=readdir(dir)))
    {
        cout<< pdir->d_name << endl;
    }
    closedir(dir);

我的当前目录包含两个文件 Screen.cpp 和 a.out。我希望此代码按顺序打印,例如ls -la命令

.
..
a.out
Screen.cpp

但是这段代码输出它就像

.
Screen.cpp
..
a.out

有没有什么简单的方法可以在不存储/排序某个容器中的列表的情况下实现这一点?

4

1 回答 1

0

答案是否定的,如果不存储和排序值,你就不能可靠地做到这一点。

我会包装DIR库,这样我就可以将它们用作迭代器。

MyCPPDir   dir(".");
std::set<std::string>  objects(dir.begin(), dir.end());
std::copy(objects.begin(), objects.end(),
          std::ostream_iterator<std::string>(std::cout, "\n"));
于 2016-05-13T16:09:23.857 回答