Итак, я написал небольшую программу, чтобы опробовать Boost Filesystem.Моя программа напишет, сколько файлов находится в текущем пути, а затем имена файлов.Вот моя программа:
#include <iostream>
#include <boost/filesystem.hpp>
using namespace boost::filesystem;
int main(){
directory_iterator start = directory_iterator(current_path());
directory_iterator di = start;
int count;
for (count = 0; di != directory_iterator(); ++di, ++count);
std::cout << std::endl << "total number of files: " << count << std::endl;
di = start;
for (; di != directory_iterator(); ++di){
std::cout << *di << std::endl;
}
return 0;
}
существуют файлы program.exe, .ilk и .pdb
Однако я получаю следующий вывод (для краткости весь путь не указан):
$ program.exe
общее число файлов: 3
[..] / program.pdb
Ошибка подтверждения: m_imp-> m_handle! = 0 && "внутренняя ошибка программы", файл c: \программные файлы \ boost \ boost_1_44 \ boost \ filesystem \ v2 \ operations.hpp, строка 1001
Если вместо этого я создаю новый directory_iterator, он отлично работает:
di = start;
// .. becomes ..
di = directory_iterator(current_path());
Я заметил аналогичный вопрос , связанный с directory_iterators, но я понятия не имею, о чем они говорят, или это та же проблема.
Вопрос: почему я не могу сохранить startiterator, а затем использовать его?перемотать мой итератор?