Ввод значений в 2D массив - правильно?

0
#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 для циклов, последние значения каждой строки (т.е. лабиринт [0] [5], лабиринт [1] [5]...) все неправильно. Похоже, что они перешли на первый символ следующей строки, но я не могу найти ничего в коде, который бы это сделал! Кроме того, еще более странно, значения, напечатанные НЕМЕДЛЕННО до и сразу после

maze[i][l] = temp.at(l); 

правильны!

Что меняет значения в моем массиве?

  • 0
    Почему char maze [dim-1][dim-1]; ???
  • 0
    Аааа спасибо Я получил индексацию и перепутывание длины. это полностью решило проблему!
Теги:
multidimensional-array

1 ответ

1

Вы должны объявить массив с размером dim not dim-1, потому что строка содержит n символов из мест от 0 до n-1 и нулевой символ в n позиции string.length() возвращает n.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню