(非テキスト) ファイルでバイト シーケンス "9µ}Æ" (または "\x39\xb5\x7d\xc6") を検索する必要があります。
オンラインで5時間検索した後、これが私ができる最善の方法です. それはうまくいきますが、もっと良い方法があるかどうか知りたいです:
char buffer;
int pos=in.tellg();
// search file for string
while(!in.eof()){
in.read(&buffer, 1);
pos=in.tellg();
if(buffer=='9'){
in.read(&buffer, 1);
pos=in.tellg();
if(buffer=='µ'){
in.read(&buffer, 1);
pos=in.tellg();
if(buffer=='}'){
in.read(&buffer, 1);
pos=in.tellg();
if(buffer=='Æ'){
cout << "found";
}
}
}
}
in.seekg((streampos) pos);
ノート:
- 使えません
getline()
。テキストファイルではないので、改行が少ないかもしれません。 - 複数文字のバッファーを使用してから、バッファーを C++ 文字列にコピーしてから、
string::find()
. ファイル全体に多くの'\0'
文字があるため、これは機能しませんでした。そのため、文字列にコピーされると、バッファ内のシーケンスが非常に短くなります。