C++: чтение / запись двоичных файлов. Что происходит в этом коде?

Я боролся с концепцией неформатированного ввода-вывода. Мой учебник курса не объясняет это хорошо. Это дает небольшую программу, но я не знаю, что здесь происходит. Если бы кто-то мог мне это объяснить, я был бы признателен

    #include <iostream>
    #include <string>
    #include <fstream>
    using namespace std;

    int main() {
     const unsigned int size = 10;
     int arr[size];
     ifstream infile("small.ppm");
     infile.read(reinterpret_cast<char *>(&arr), size * sizeof(arr[0]));
     infile.close();

     ofstream outfile("newfile.ppm");
     outfile.write((char *)&arr, size * sizeof(arr[0]));
     outfile.close();
    }

Что именно делают функции read() и write(). Я понимаю, что они должны принимать (char *, buffer_size) в качестве аргументов, но что делают сами функции? Кроме того, как только я прочитал данные с помощью read(), как мне сохранить эти данные и манипулировать ими?

Извините, что это такой длинный вопрос. Я уже давно борюсь с этой концепцией. Большое спасибо за вашу помощь

1 ответ

но что делают сами функции?

Это запись / чтение данных в виде побайтной копии в / из двоичного файла.

Кроме того, как только я прочитал данные с помощью read(), как мне сохранить эти данные и манипулировать ими?

Вы уже сохранили int arr[size];, Вы можете манипулировать этими данными, используя это int массив.

Ловушки:

Если эти данные были сериализованы на другом компьютере, вы заметите проблемы с бесконечностью, относящиеся к конкретному компьютеру. int представление.

Другие вопросы по тегам