正确地将值输入到二维数组中

Inputting values into a 2D array- correctly?

本文关键字:二维数组 输入 正确地      更新时间:2023-10-16
#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;
}

代码读取假定为正方形的文本块,并将每个字符放入2d数组中。它编译和运行得很好,但是当我用最后2个for循环检查数组的值时,每行的最后一个值(即。迷宫[0][5],迷宫[1][5]…)都是错的。似乎他们已经流血到下一行的第一个字符,但我在代码中找不到任何会这样做的东西!而且,更奇怪的是,在

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

是正确的!

是什么改变了数组中的值?

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