2015-01-15 2 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"를 사용하고 난 당신이 당신의 cont 벡터 각 디렉토리에 대한 하나의 벡터가 포함되어 확인해야 루프 전에 다른 벡터C++ 벡터 첨자가 범위를 벗어났습니다.

+0

돈을 ' push_back 때 인덱스를 추가하십시오. 그냥 cont.push_back – Chiel

+0

하시겠습니까? 나는 벡터의 구조가 cont [폴더] [파일] ..이라는 것을 의미하고 모든 폴더에 대한 파일의 이름을 push_back으로하려고 시도하고있다. – hallelujah

+0

@ 할렐루야 '벡터'가 적어도 '크기가 조정되었다'는 것을 확인 했는가?)'인덱스'f'에 무엇인가를 저장하는 것이 적절합니까? –

답변

0

의 경로가 :

cont.resize(dir_no) 
+0

가 작동했습니다! 고맙습니다 ! – hallelujah

관련 문제