C++ には、ファイル内のテキストを検索するメソッドがあります。ファイルを変数に読み取り、strstr を使用することで機能します。しかし、ファイルが非常に大きくなると問題が発生しました。
_popen を使用して find.exe を呼び出すことで、これを解決できると考えました。これらの条件がすべて真である場合を除き、find は機能します。
- ファイルのタイプは unicode (BOM=FFFE) です
- ファイルは正確に 4096 バイトです
- 検索しているテキストは、ファイル内の最後のテキストです
再作成するには、次のようにします。
- メモ帳を開く
- 最後に 2046 個の X を挿入し、次に A を挿入します
- test.txt として保存、encoding = "unicode"
- ファイルが正確に 4096 バイトであることを確認します
- コマンド プロンプトを開き、次のように入力します。 find "A" /c test2.txt -> No hits
私もこれを試しました:
- X を追加または削除すると、ヒットします (ファイルは 4096 バイトではなくなります)。
- UTF-8 として保存し (ファイルが再び 4096 バイトになるように十分な数の X を追加します)、ヒットします。
- ファイルの途中で何かを検索すると (ファイルはまだユニコードで 4096 バイト)、ヒットします。
これはバグですか、それとも何か不足していますか?