掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
C++でバイナリデータ内の「0x1a」を正しく読むには? (ID:50238)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
VC++でバイナリデータを読み書きしたいのですが、 入力ストリームをinputFileとして、 while(!inputFile.eof())で回して (inputFile).readを使ってデータを読み込もうとすると、 データ内にEOFを同じ値の0x1aがあるとそこで読み込みが 止まってしまいます。うまくデータを読み込む方法はないでしょうか。 テスト用に以下のようなプログラムを書いてみました。 --------------------- #include <iostream> #include <fstream> using namespace std; void writeFile(){ ofstream outputFile("test.dat", ios::out); int count = 0; for(int i = 0; i < 0xffff; i++){ //if((i % 256) != 26 && ((i >> 8) % 256) != 26){ outputFile.write((char *)&i, sizeof(int)); count++; //} } cout << "Write : " << (count * 4) << "byte." << endl; outputFile.close(); } void readFile(){ ifstream inputFile("test.dat", ios::in); int count = 0; int i; while(!inputFile.eof()){ inputFile.read((char *)&i, sizeof(int)); count++; } inputFile.close(); cout << "Read : " << (count * 4) << "byte. " << endl; } main(){ writeFile(); readFile(); } コメントの部分を外して、EOFの値を含むデータを書き込まないようにすると、 きちんと最後までファイルを読みますが、EOFの値が途中で混じっていると そこで止まってしまうようです。 どなたかご指導のほどよろしくお願いします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.