1

データベクトルのコレクションと考えることができる、文字列識別子を含むASCII番号のテキストファイル(> 50k行)があります。ユーザー入力に基づいて、アプリケーションは実行時にこれらのデータ ベクトルの 1 つだけを必要とします。

私が見る限り、このテキスト ファイルから情報を取得するには 3 つのオプションがあります。

  1. テキスト ファイルとして保持し、実行時に必要なベクトルを抽出します。欠点は、コードに相対パスを含めることができないため、ユーザーはファイルの正しい場所 (?) を指定する必要があることだと思います。または、configure スクリプトを取得して絶対パスをマクロとして挿入します。
  2. xxdを使用して静的な unsigned char に変換し(ここで説明されているように)、結果のファイルを含めます。欠点は、5MB のファイルが 25MB のインクルード ファイルになることです。ランタイム中にこの 25MB がメモリにロードされるという考えは正しいですか?
  3. オブジェクトに変換し、こちらで説明されているようにobjcopyを使用してリンクします。これにより、ファイル サイズはほぼ同じに保たれているようです。他のトレードオフはありますか?

これを行うための標準/推奨方法はありますか? 違いがあれば、C または C++ を使用できます。

ありがとう。

(gcc を使用して Linux で実行)

4

3 に答える 3

3

番号 1 を使用し、ファイルパスを引数としてプログラムに渡します。それを行うことに何の問題もありません。それは単純で簡単です。

于 2012-08-10T11:47:21.923 に答える
0

ここで答えを見てください:

実行中のプログラムのディレクトリ

投票数が最も多かった回答は、データ ファイルの処理方法を接着剤で示してくれます。ただし、リンクで説明されているように、ホームフォルダーの代わりに/usr/shareに保存することをお勧めします。

于 2012-08-10T11:57:05.063 に答える
0

zlib を使用することをお勧めします (両方の方法が可能です: サイド ファイルまたは圧縮データを含む)。

于 2012-08-10T12:11:41.087 に答える