C/C++

Запись и чтение двумерного массива в бинарный файл

Добрый вечер, у меня проблема с записью и чтением двумерного массива, мне нужно сделать сохранения для игры морской бой, то есть сохранить два двумерных массива, абсолютно не понимаю как это сделать, буду очень благодарен за помощь.
Для символьной статической матрицы размера n

#include <fstream>
#include <iostream>
using namespace std;
int main() {
const auto n = 3U;
char a[n][n] = {
{ '.', 'O', 'O' },
{ 'X', 'X', '.' },
{ '.', '.', '.' }
};
char b[n][n] = {
{ 'X', '.', '.' },
{ '.', 'X', 'O' },
{ '.', '.', 'O' }
};
for (auto i = 0U; i < n; ++i) {
for (auto j = 0U; j < n; ++j) cout << a[i][j];
puts("");
}
puts("");
for (auto i = 0U; i < n; ++i) {
for (auto j = 0U; j < n; ++j) cout << b[i][j];
puts("");
}
puts("\n");
ofstream save("sea_battle.bin", ios::binary);
if (save.is_open()) {
save.write((char*)&n, sizeof(n));
for (auto i = 0U; i < n; ++i) {
for (auto j = 0U; j < n; ++j) {
save.write(&a[i][j], sizeof(char));
}
}
for (auto i = 0U; i < n; ++i) {
for (auto j = 0U; j < n; ++j) {
save.write(&b[i][j], sizeof(char));
}
}
save.close();
}
char ax[n][n] = { 0 };
char bx[n][n] = { 0 };
ifstream load("sea_battle.bin", ios::binary);
if (load.is_open()) {
load.read((char*)&n, sizeof(n));
for (auto i = 0U; i < n; ++i) {
for (auto j = 0U; j < n; ++j) {
load.read(&ax[i][j], sizeof(char));
}
}
for (auto i = 0U; i < n; ++i) {
for (auto j = 0U; j < n; ++j) {
load.read(&bx[i][j], sizeof(char));
}
}
load.close();
}
for (auto i = 0U; i < n; ++i) {
for (auto j = 0U; j < n; ++j) cout << ax[i][j];
puts("");
}
puts("");
for (auto i = 0U; i < n; ++i) {
for (auto j = 0U; j < n; ++j) cout << bx[i][j];
puts("");
}
system("pause > nul");
}
Вадим Вышинский
Вадим Вышинский
65 229
Лучший ответ
Александр Луковкин а что такое 0U в коде, я видимо ещё не дошёл до этого
Пишем в файл размеры массивов, потом - сами массивы, построчно. Читаем в том же порядке.
Александр Луковкин Я не понимаю через что их делать, ofstream,или что-то другое?
если ты ничего в этом не понимаешь - ТАК И НЕ СУЙСЯ ТУДА!
Александр Луковкин Чел, пожалуйста не высирай, я далеко не middle и не senior,я делаю консольные приложения
Александр Луковкин ну начнём с того, что мне добрые люди уже помогли, спасибо им за то что делятся своими знаниями с другими, а тебя прошу не высирать больше
СЕРИАЛИЗАЦИЯ или PICKLE
CM
Chingizkhan Mongol
15 114
Александр Луковкин я ещё не доходил до классов, мне нужно это сделать через ofstream,или что-то похожее на это