Я работаю над созданием программы быстрого чтения файлов на языке c / c ++, которая будет извлекать каждый файл в каталоге в порядке их сохранения (создания). Я использую SFML и BOOST, но моя программа будет возвращать файлы только в случайном порядке. Я полагаю, это связано с порядком размещения файлов в b-дереве? Как мне заставить BOOST вернуть файлы в том порядке, в котором они были созданы?
Вот соответствующая часть кода:
#include <string>
#include <iostream>
#include <boost/filesystem.hpp>
#include "SFML/Graphics.hpp"using std::cout;
using namespace boost::filesystem;
using namespace std;
....
path p (argv[1]);
....
for (directory_entry& x : directory_iterator(p)){
....
fullPathName = x.path().string();
filename = x.path().filename().string();
stem = x.path().stem().string();
seqnum = stem.substr(4,5);
extn = x.path().extension().string();
cout << fullPathName << ", " << filename << ", " << stem << ", " <<
seqnum << ", " << extn <<'\n';
}
Вот пример вывода:
../takes/test/snap00179.png, snap00179.png, snap00179, 00179, .png
../takes/test/snap00321.png, snap00321.png, snap00321, 00321, .png
../takes/test/snap00094.png, snap00094.png, snap00094, 00094, .png
../takes/test/snap00121.png, snap00121.png, snap00121, 00121, .png
../takes/test/snap00026.png, snap00026.png, snap00026, 00026, .png
../takes/test/snap00024.png, snap00024.png, snap00024, 00024, .png
../takes/test/snap00155.png, snap00155.png, snap00155, 00155, .png
../takes/test/snap00065.png, snap00065.png, snap00065, 00065, .png
../takes/test/snap00015.png, snap00015.png, snap00015, 00015, .png
../takes/test/snap00075.png, snap00075.png, snap00075, 00075, .png
../takes/test/snap00017.png, snap00017.png, snap00017, 00017, .png
Задача ещё не решена.
Других решений пока нет …