7

C++ には、ファイル内のテキストを検索するメソッドがあります。ファイルを変数に読み取り、strstr を使用することで機能します。しかし、ファイルが非常に大きくなると問題が発生しました。

_popen を使用して find.exe を呼び出すことで、これを解決できると考えました。これらの条件がすべて真である場合を除き、find は機能します。

  • ファイルのタイプは unicode (BOM=FFFE) です
  • ファイルは正確に 4096 バイトです
  • 検索しているテキストは、ファイル内の最後のテキストです

再作成するには、次のようにします。

  1. メモ帳を開く
  2. 最後に 2046 個の X を挿入し、次に A を挿入します
  3. test.txt として保存、encoding = "unicode"
  4. ファイルが正確に 4096 バイトであることを確認します
  5. コマンド プロンプトを開き、次のように入力します。 find "A" /c test2.txt -> No hits

私もこれを試しました:

  • X を追加または削除すると、ヒットします (ファイルは 4096 バイトではなくなります)。
  • UTF-8 として保存し (ファイルが再び 4096 バイトになるように十分な数の X を追加します)、ヒットします。
  • ファイルの途中で何かを検索すると (ファイルはまだユニコードで 4096 バイト)、ヒットします。

これはバグですか、それとも何か不足していますか?

4

1 に答える 1