Я пытаюсь создать свой собственный формат файла.Я хочу сохранить файл изображения и некоторое текстовое описание в этом файле.Формат файла будет примерно таким:
image_file_size
image_data
desctiption_file_size
description_data
Но без символов '\ n'.Для этой цели я использую std :: ios :: binary.Вот некоторый код, описывающий этот процесс (это эскиз, а не последний вариант): Запись моего файла.
long long image_length, desctiption_length;
std::fstream m_out(output_file_path, std::ios::out |
std::ios::binary);
std::ifstream input_image(m_image_file_path.toUtf8().data());
input_image.seekg(0, std::ios::end);
image_length = input_image.tellg();
input_image.seekg(0, std::ios::beg);
// writing image length to output file
m_out.write( (const char *)&image_length, sizeof(long long) );
char *buffer = new char[image_length];
input.read(buffer, image_length);
// writing image to file
m_out.write(buffer, image_length);
// writing description file the same way
// ...
Чтение моего файла.
std::fstream m_in(m_file_path.toUtf8().data(), std::ios::in );
long long xml_length, image_length;
m_in.seekg(0, std::ios::beg);
m_in.read((char *)&image_length, sizeof(long long));
m_in.seekg(sizeof(long long));
char *buffer = new char[image_length];
m_in.read(buffer, image_length );
std::fstream fs("E:\\Temp\\out.jpg");
fs.write(buffer, image_length);
А теперь изображение (E:\ Temp \ out.jpg) сломан.Я смотрю это в шестнадцатеричном редакторе, и есть несколько дополнительных битов.
Может кто-нибудь помочь мне и сказать, что я делаю неправильно?