我正在尝试为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;
答案 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,因此您正在将整个文件读入第一个元素。而您正在执行(行*列)次。
您需要重新设计代码才能正确读取代码。