打印当前目录c ++的内容

时间:2016-05-13 15:47:30

标签: c++ dirent.h

我正在尝试模拟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

有没有简单的方法如何在不将列表存储/排序到某个容器中的情况下实现呢?

1 个答案:

答案 0 :(得分: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"));