Как отформатировать массив, чтоб массив был не как строка, а как массив?

Как отформатировать массив, чтобы массив был не как строка, а как массив?

using namespace std;

int main()
    {
    ifstream file("c:\\1\\text.txt"); 
    if (file.is_open())
    {
        printf("File was opened\n");
    }
    else
    {
        printf("File wasn't opened\n");
        return -1;
    }
    int n, m;
    file >> m;
    file >> n;

    int** a = new int* [m] {};
    for (int i{}; i < m; i++) {
        a[i] = new int[n];
        for (int j{}; j < n; j++) {
            file >> a[i][j];

            printf("a[%d][%d] = %d\t", i, j, a[i][j]);
        }
    }
}

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

Автор решения: Анонимный Паша

Нормальный двух-мерный массив можно реализовать используя только двоичные файлы

#include <fstream>
#include <ios>
#include <iostream>

int main() {
    std::ifstream f;
    f.open("1.bin", std::ios::binary | std::ios::in);
    if(f.is_open()) {
        std::cout << "File was opened" << std::endl;
    } else {
        std::cerr << "File wasn't opened" << std::endl;
        return 1;
    }
    int m, n, i, j;
    f.read(reinterpret_cast<char *>(&m), sizeof m);
    f.read(reinterpret_cast<char *>(&n), sizeof n);
    int **arr = new int*[m];
    for(i = 0; i < m; i++) {
        arr[i] = new int[n];
        for(j = 0; j < n; j++) {
            f.read(reinterpret_cast<char *>(&arr[i][j]), sizeof(int));
            std::cout << "a[" << i << "][" << j << "] = " << arr[i][j] << "\t" << std::endl;
        }
    }
    for(i = 0; i < m; i++)
        delete[] arr[i];
    delete[] arr;
    f.close();
    return 0;
}

У меня вывод такой:

File was opened
a[0][0] = 1
a[0][1] = 2
a[0][2] = 3
a[1][0] = 4
a[1][1] = 5
a[1][2] = 6
a[2][0] = 7
a[2][1] = 8
a[2][2] = 9

При условии что в 1.bin находится:

03 00 00 00 03 00 00 00 01 00 00 00 02 00 00 00
03 00 00 00 04 00 00 00 05 00 00 00 06 00 00 00
07 00 00 00 08 00 00 00 09 00 00 00
→ Ссылка
Автор решения: DmitryK

Просто добавьте после внутреннего цикла перевод строки.

for (int i{}; i < m; i++) {
        a[i] = new int[n];
        for (int j{}; j < n; j++) {
            file >> a[i][j];
            printf("a[%d][%d] = %d\t", i, j, a[i][j]);
        }
        printf("\n");  // <-----------------
    }
→ Ссылка