2015-01-15 3 views
1
public:vector<vector<string>> cont; 
void memContent(string path, int f){ 
    DIR *dir; 
    struct dirent *ent; int j = 0; 
    if ((dir = opendir(path.c_str())) != NULL) { 
     while ((ent = readdir(dir)) != NULL) { 
      for (int i = 0; i < ext_no; i++) 
      if (strstr(ent->d_name, ext[i].c_str())) 
      { 

       cont[f].push_back(ent->d_name); 
      } 
     } 
     closedir(dir); 
    } 
} 
main(){ 

for (int i = 0; i < f.dir_no; i++) 
    f.memContent(f.dir[i], i); 
} 

У меня есть вектор векторов, который должен получить все файлы из нескольких папок, но я продолжаю получать ошибку о размере вектора; Btw: я использовал «F», чтобы узнать текущую папку и у меня есть пути в другом вектореC++ Векторный индекс вне допустимого диапазона dirent

+0

Дон» t добавьте индекс, когда вы push_back. Просто сделайте cont.push_back – Chiel

+0

вы уверены? Я имею в виду, что структура вектора является cont [папка] [файл] .. и я только пытаюсь push_back имя файла для каждой папки – hallelujah

+0

@hallelujah Вы гарантировали, что 'vector' по крайней мере был« изменен »() 'правильно хранить что-то в индексе' f'? –

ответ

0

Перед цикла вы должны гарантировать, что Ваш cont вектор содержит один вектор для каждого каталога:

cont.resize(dir_no) 
+0

, который сработал! Спасибо ! – hallelujah

Смежные вопросы