Как скопировать контент из файла в 2D вектор? (C ++) - PullRequest
0 голосов
/ 19 апреля 2019

У меня есть своего рода карта из чисел в файле. Я хочу прочитать все это в 2D-вектор, который я создал внутри функции для него. Я инициализировал векторы в 0с. Что происходит, когда я его компилирую, я печатаю векторную > матрицу, и ничего не меняется. Все остается в нулях.

EDIT :: Программа не показывает ошибок при открытии файла. Я полагаю, что проблема может быть вокруг k, который после некоторой отладки не получает правильное число. Я также вынул .eof () из цикла.

Это функция копирования. Открывает основной файл "casateste.txt"

void copiar(vector<vector<int> > &matriz)  
{
    ifstream origem;
    origem.open("casateste.txt");
    int k;

    while(!origem.eof())
    {
        for(int i=0; i<r; i++)
        {
            k=origem.get();
            for(int j=0; j<c; j++)
            {
                k=origem.get();
                matriz[i][j]=k;
            }
        }
    }       
}

Это функция печати. ​​

void printMapa(vector<vector<int> > &matriz)
{
    for(int i=0; i<r; i++)
    {
        for(int j=0; j<c; j++)
        {
            cout << matriz[i][j];
        }
        cout << endl;
    }
}

Инициализация матрицы:

main(){
    int i;
    vector<vector<int> > matriz(r, vector<int>(c));
    for(i=0; i<r; i++) {matriz[i].resize(c);}
    copiar(matriz);
    printMapa(matriz);
}

Матрица должна быть примерно такой (когда ее пустые места заполняются -1 или что-то в этом роде.

32222222222222222222222224
1          1             1
1          1             1
1  9       1  9          1
1          122222 22222221
122222222 22             1
1      1                 1
1                        1
1 9    1                 1
1      1                 1
1      1                 1
12222222222222622222222221
1          1          9  1
1                        1
1          1             1
1  9       1             1
62222222222222222222222225

Когда он печатает, это просто нули.

...