fstream - binarny zapis i odczyt z pliku

0

Mam w programie dużych rozmiarów macierz utworzoną dynamicznie (double ** m). Potrzebuję zapisać taką macierz do pliku, a potem odczytać. Nie mam pomysłu jak to rzutować na char * (funkcja write/read):

ofstream ofs("plik1.bin", ios::out | ios::binary);
if(ofs.is_open())
{
     ofs.write( /*?*/ , sizeof(m) * liczba_elementow_macierzy);
}
ofs.close();
0

Zakładając, że masz macierz kwadratową:

// void saveMatrixToFile(double **m, int n, ostream &outStream) // tak jest chyba lepiej
void saveMatrixToFile(double **m, int n, const char *filneName) {
    ofstream ofs(filneName, ios::out | ios::binary);

    for(int i=0; i<n; ++i) {
        ofs.write(reinterpret_cast<char *>(m[i]), sizeof(m[i][0]) * n);
    }
    ofs.close();
}

Zasada jest taka, NIGDY nie zapisuj wskaźników.

0

Dynamiczna alokacja macierzy, pomijając użycie vectorów itp. sprowadza się do użycia wskaźnika (typ **). Jak więc mam sobie poradzić inaczej nie używając wskaźników, w tym wypadku muszę z tych wskaźników korzystać podczas zapisu/odczytu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1