これは主に:
std::ofstream rainbow_file("rainbow.bin", std::ios::binary);
rainbow_file.write((const char*) p.pass, password::PASSWORD_SIZE);
rainbow_file.write((const char*) h.hash_, hash::HASH_SIZE);
どこ :
class hash
{
public:
static const size_t HASH_SIZE = 32;
uint8_t hash_[HASH_SIZE];
...
}
// similar for pass
Notepad++ で rainbow.bin ファイルを開くと、パスがパス (AZ、@、!、az、0-9 の文字) として表示され、ハッシュのバイナリ ガベージが表示されます。後で私がするとき:
std::ifstream rainbow_file("rainbow.bin", std::ios::binary);
rainbow_file.read((char*) p.pass, password::PASSWORD_SIZE);
rainbow_file.read((char*) h.hash_, hash::HASH_SIZE);
パスはバイナリのゴミとして返されます。私は多くのことを試しました(バイナリモードではない2つのストリームを開く、seekgを使用してファイルポインターを個別に移動する、さまざまなキャストを試すなど)が、私の人生ではこれを機能させることができません。そして、その理由がとても気になります。そして欲求不満。npp で繰り返しますが、すべてが順番に表示されます。
編集:これらは異なる制御フローであり、ストリームは適切にclosed()されています
Edit2:動作します!それを行うためのよりC ++の方法については、以下の回答とコメントを引き続き参照してください