C++ C++;矢量下标超出范围指令 public:vector cont; void memContent(字符串路径,int f){ DIR*DIR; 结构方向;int j=0; if((dir=opendir(path.c_str())!=NULL){ while((ent=readdir(dir))!=NULL){ 对于(int i=0;id_name,ext[i].c_str()) { 继续[f]。向后推(ent->d\U名称); } } closedir(dir); } } main(){ 对于(int i=0;i

C++ C++;矢量下标超出范围指令 public:vector cont; void memContent(字符串路径,int f){ DIR*DIR; 结构方向;int j=0; if((dir=opendir(path.c_str())!=NULL){ while((ent=readdir(dir))!=NULL){ 对于(int i=0;id_name,ext[i].c_str()) { 继续[f]。向后推(ent->d\U名称); } } closedir(dir); } } main(){ 对于(int i=0;i,c++,C++,我有一个向量向量,它应该从多个文件夹中获取所有文件,但我一直在获取向量大小的错误; 顺便说一句:我使用“f”来知道当前文件夹,在循环之前,我在其他向量中有路径,您需要确保您的cont向量为每个目录包含一个向量: public:vector<vector<string>> cont; void memContent(string path, int f){ DIR *dir; struct dirent *ent; int j = 0; if ((d

我有一个向量向量,它应该从多个文件夹中获取所有文件,但我一直在获取向量大小的错误;
顺便说一句:我使用“f”来知道当前文件夹,在循环之前,我在其他向量中有路径,您需要确保您的
cont
向量为每个目录包含一个向量:

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);
}

推后时不要添加索引。继续往后推你确定吗?我的意思是向量的结构是cont[文件夹][文件]。。我只是想把每个文件的名字往后推folder@hallelujah您是否确保
向量
至少已正确调整大小()以在索引
f
中存储内容?请在说明中添加cont的定义。尝试使用cont.at(f)而不是cont[f],如果没有元素f,那么您将得到一个异常。
cont.resize(dir_no)