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
представление.