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

Printing the content of current directory c++

本文关键字:c++ 当前目录 打印      更新时间:2023-10-16

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

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

答案是否定的——如果不存储和排序值,就无法可靠地执行此操作。

我会包装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"));