从C ++中的文件为2D向量分配值

时间:2018-07-09 00:50:00

标签: c++ file vector 2d

我正在尝试为2d向量分配值,这是我定义向量的方式,并且重要的是要说行和列是先前定义的整数

vector < vector <int>> vec(rows , vector <int> (columns,0));

我想分配给这个向量,一个pbm文件的每个字符,这个文件只有'1'和'0',所以这就是我读取它的方式

char i;
FILE* fp;
fp = fopen("file.pbm", "r");

通过这种方式将值赋给向量

for (int h=0; h<rows; h++){
    for (int j=0; j<columns; j++){ 
        while((i=fgetc(fp))!=EOF){
            vec[h][j] = i;
        }
    } 
}

但是当我尝试打印所有矢量内容时,此内容仅具有“ 0”

for (int h=0; h<rows; h++){
        for (int j=0; j<columns; j++) 
            cout << vec[h][j];
    cout <<endl; 
}

fclose(fp);

如果有人能告诉我我在做这项作业时哪里失败了,谢谢!

vec[h][j] = i;

1 个答案:

答案 0 :(得分:0)

for (int h=0; h<rows; h++){
    for (int j=0; j<columns; j++){ 
        while((i=fgetc(fp))!=EOF){
            vec[h][j] = i;
        }
    } 
}

while循环遍历整个文件,而不会增加h和j,因此您正在将整个文件读入第一个元素。而您正在执行(行*列)次。

您需要重新设计代码才能正确读取代码。