正确地将值输入到2D阵列中?

时间:2014-06-06 19:15:34

标签: c++ multidimensional-array

#include <iostream>
#include <fstream>
#include <string>       

using namespace std;

int main(){

string temp; 
ifstream in("infile.txt");
getline(in, temp);
int dim = temp.length();



char maze [dim-1][dim-1];



int i = 0;
    do{

    for(int l = 0; l<dim; ++l){

        cout<< temp.at(l);
        maze[i][l] = temp.at(l);
        cout << maze[i][l];
    }
    i++;
    cout << endl;

}while(getline(in, temp));


for(int k=0; k<dim; k++){
    for(int m=0; m<dim; m++){
        cout << maze[k][m];
    }
    cout<< endl;
}



cout<< *maze;
}

代码读取假定为方形的文本块,并将每个char放入2d数组中。它编译并运行正常,但是当我用最后2个for循环检查数组的值时,每行的最后一个值(即迷宫[0] [5],迷宫[1] [5] ......)都错了。看起来它们已经渗透到下一行的第一个字符,但我无法在代码中找到任何可以执行此操作的内容!此外,甚至更紧张的是,在

之前和之后立即打印的值
maze[i][l] = temp.at(l); 

是对的!

什么是更改数组中的值?

1 个答案:

答案 0 :(得分:1)

你必须声明大小为dim而不是dim-1的数组,因为string有0个字符到n-1的n个字符和n个位置的null字符string.length()返回n。