2012-12-16 32 views
5

大量のデータ(可変長の整数配列、テキスト文字列のライブラリなど)を実行可能ファイルに直接ハードコーディングしたいので、追加のファイルはありません。大きなデータセットを実行可能ファイルにハードコーディングしますか?

私の質問は、これをC++で行う最も実用的で組織化された方法は何ですか?ヘッダーやソースファイルのどこにデータを置くのですか?私はどのような構造を使うべきですか?

私はこれがデータを扱う受け入れられた方法ではないことを認識しています。しかし、私をユーモアしてください!

+0

これを見る前にこれを見たことがあります。 – djechlin

+0

これを別の.cppファイル(例えば 'resources.cpp')に入れてみて、それを' extern'にしてヘッダファイルを与えてください。 –

+0

http://stackoverflow.com/questions/410980/include-a-text-file-in-a-c-program-as-a-char関連ではなく、私が探していたものではありません。 – djechlin

答えて

8

C++とCの両方で、ヘッダファイルを使用してこれらの変数の宣言を行い、実際の初期化コードを.c(または.cc)ファイルに入れることができます。 CとC++の両方に適切なイニシャライザ構文があります。たとえば、次のように

mydata.h:

extern int x; 
extern int a[10]; 
extern unsigned char *s; 

mydata.c:

#include "mydata.h" 
int x = 123; 
int a[10] = {1,2,3,4,5,6,7,8,9,10}; 
unsigned char *s = "mystring"; 

その後、main.cのがあります:

#include "mydata.h" 
#include <stdio.h> 

int main(const int argc, char *argv[]) 
{ 
    printf("%d, %d, %s\n", x,a[5],s); 
} 

テストランは、このようになります

$gcc -o main main.c mydata.c 
$ ./main 
123, 6, mystring 

実際に整理するために、CSVファイルのSQLデータベースのような、あなたのデータソースからこのような形式のファイルを生成するPerl/Python/PHPスクリプトを作成します。プロジェクトにOBJとのリンクにデータを変換し

http://sourceforge.net/projects/bin2obj/

1

はこれを試してみてください。

関連する問題