我正在尝试模拟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
有没有简单的方法如何在不将列表存储/排序到某个容器中的情况下实现呢?
答案 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"));