-4

だから私は最近C++を試し始めたばかりで、すでに基本を学んでいます。私が知りたいのは、ファイルとの間でバイト/整数/ロングをどのように読み書きできるかだけです。

まず、なぜそれが必要なのかをお話ししたいと思います。基本的に、特別な形式のファイルからデータを読みたいと思っています。すべてのデータは、そのファイルにバイナリで書き込まれます。

ファイル形式の仕様

私はすでにそのプログラムを別の言語で書いていて、自分のプログラムを C++ で書き直したいと思っています。私が以前に使用した言語は BlitzMax と呼ばれ、その言語関数は既に実装されており、WriteByte、ReadByte、WriteInt、ReadInt などと呼ばれています。必要です、それは非常に高く評価されます。そして、もし私のためにそれらを書いてくれるなら、それらがどのように機能するかについても説明できますか?

私を助けてくれるすべての人に感謝します!:)

編集:ここでは、要求に応じて、コードが必要なことを多少行います。int 50 をバイナリでファイルに書き込みますが、それは私ができる限りです。私はまだいくつかの部分を理解できません(コードはグーグルで見つかりました、私はそれを少し編集しました)。そして、バイトとロングを書き込む方法がまだ必要です。

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    int num = 50
    ofstream file("file.txt", ios::binary);
    file.write(reinterpret_cast<const char *>(&num), sizeof(num));
    file.close ();
    return 0;
}
4

1 に答える 1

0

同じ方法に従ってください:

int num = 50;
unsigned char x = 9;
float t = 9.0;

ofstream file("file.bin", ios::binary);
file.write(reinterpret_cast<const char *>(&num), sizeof(num));
file.write(reinterpret_cast<const char *>(&x), sizeof(x));
file.write(reinterpret_cast<const char *>(&t), sizeof(t));
file.close ();
return 0;

読書に関するいくつかの詳細情報。

ただし、バイナリの読み取り/書き込みを行う場合は、移植性の問題に注意してください。移植性の問題は、整数があなたのマシンでは 4 バイトで、他のマシンでは異なるサイズになる可能性があるという事実に関連している可能性があります。エンディアンもまた別の問題です。float のエンコードはバイナリでも移植性がありません ( here )。

于 2015-05-05T13:26:46.947 に答える