Данные не записываются в двумерный массив char'ов

Я пишу игру, и хочу сделать так, чтобы с файла считывались строки записывались в двумерный массив, и затем считывался массив и строилась карта. Но компилятор данный код не компилирует и выдает такую ошибку - C++ выражение должно быть допустимым для изменения левосторонним значением. Как сделать чтобы данный код скомпилировался либо поменять его? Вот код:

std::ifstream file("maps/map.txt");
char Map[35][66];

int main()
{
    char line[66];
    for (int i = 0; i < 35; i++)
    {
        file >> line;
        Map[i] = line;
    }
}

Ответы (2 шт):

Автор решения: EOF

Map[i] - это одномерный массив char на 66 элементов. line является тем же. В строке

Map[i] = line;

Вы пытаетесь присвоить один массив другому. Так делать нельзя. Нужно в цикле скопировать данные из одного массива в другой:

for (int i = 0; i < 35; i++)
{
    file >> line;
    for (int j = 0; j < 66; j++)
    {
        Map[i][j] = line[j]; 
    }
}

Но так как у Вас массив char, то можно использовать функцию strcpy из cstring

for (int i = 0; i < 35; i++)
{
    file >> line;
    strcpy(Map[i], line);
}

Или же вообще обойтись без дополнительного массива и читать сразу в Map:

for (int i = 0; i < 35; i++)
{
    file >> Map[i];
}
→ Ссылка
Автор решения: AlexGlebe

Оператора присваивание для массивов нет. Есть возможность это сделать если массив сделать элементом структуры.

# include <fstream>

std::ifstream file("maps/map.txt");

struct  MapLine {
  char  line  [ 66  ] ;
} ;

MapLine Map  [ 35  ] ;

int main()
{
    MapLine line  ;
    for (int i = 0; i < 35; i++)
    {
        file >> line  . line  ;
        Map [ i ] = line  ;
    }
}
→ Ссылка