私自身のファイル形式を作成しようとしています。私は画像ファイル とそのファイルにテキストの説明を保存したいと思います。1つに複数のファイルがあります
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)が壊れています。私は16進数でそれを見ている エディタといくつかの余分なビットがあります。
誰かが私を助け、私が間違っていることを伝えることができますか?
のアーカイブを再発明していますか?既存のzip/tar/cpio /どんなフォーマットを使用することはできませんか?また、[EXIFタグ](http://en.wikipedia.org/wiki/Exchangeable_image_file_format)を参照してください。 – sehe
はい、私はその目的のためにzipとtarライブラリを試していますが、実際にはうまくいっていない作品やクロスプラットフォームのライブラリが見つかりませんでした。 私はlibzipを試していましたが、勝利しても動作しませんでした。また、私はタールを試していますが、libtarは私にとってはほとんど理解できません。たぶん私はそのようにしてもっと試してみる必要があります。 – fryme
[PoCo](http://pocoproject.org/docs/ZipUserGuide.html)、[ZipArchive](http://www.viksoe.dk/code/ziparchive.htm)を参照してください。あなたもここで:http://stackoverflow.com/questions/505863/how-do-i-zip-a-directory-of-files-using-c/505984#505984 – sehe