0

基本的に、プログラムで使用するために、プログラムでハードドライブディスクからさまざまな変数を取得する必要があります。詳細を尋ねる前に、それが可能であることを確認する必要があると思います。それは...ですか?

もしそうなら、最善の方法は何ですか?.iniファイルの使用を見てきましたが、特に.iniファイルからデータを取得する方法がわかりません。変数が常にx行にあることを確認するために混乱させたテキストファイルと同じですか?例えば:

ifstream variables("variables.ini");

//some code later
//assume line 'x' holds a variable

if(variables.good())
{
   variables.get(x);
}

//or whatever =/

私はここで何をすべきか途方に暮れています。

編集:私の選択した言語はC++です。

4

3 に答える 3

1

あなたが取り組む必要がある最初の質問は、誰とその理由です。どのようにそれらから続くかについてのあなたのオプション。

では、誰(または何)がデータにアクセスするのでしょうか?それがプログラム自体である場合は、データを好きなように保存できます-バイナリファイル、xml、データベース、iniファイルなど。ただし、実行前にデータを変更できるようにユーザーがデータに簡単にアクセスできる必要がある場合は、簡単に編集できるiniのようなテキストファイルが適しています。他の形式で保存されたデータを編集するには、保存されたパラメータを操作するためだけに、まったく別のプログラムを作成する必要がある場合があります。多分それはあなたの状況で理にかなっているかもしれませんし、そうでないかもしれませんが、それはより多くの仕事になるでしょう。

iniルートを選択した場合は、正しい方向に進んでいます。それらは単なるテキストファイルです。一般的な形式は、セクション(通常は角かっこ内)を持ち、次にセクション内にキーと値のペアを含めることです。通常、コメント行はセミコロンで始まります。これは、設定間を行ったり来たりしたいユーザーにとっては便利なタッチです。

だからこのようなもの:

[System]
    datapath = /home/me/data

[Application]
    start_count = 12
;   start_count = 20  //this is a comment

データの特定の行について心配する必要はありません。ファイルを1行ずつ読んでください。空の行またはコメント行が破棄されます。現在のセクションに注意し、キーと値のペアを処理します。

解析されたファイルをプログラムに保存する方法はたくさんあります。簡単な方法は、セクション名とキーをマップのキーに連結することです。(キー/値ペアの)値は、マップのデータになります。

したがって、「Systemdatapath」は1つのマップキーであり、その値は「/ home / me/data」になります。プログラムが値を使用する必要がある場合は、キーで検索するだけです。

それが基本です。最終的には、それを装飾したくなるでしょう。たとえば、タイプごとに値を取得するメソッド。たとえば、getString()、getInteger()、getFloat()などです。

于 2009-07-07T04:19:48.273 に答える
0

アプリケーションの.iniファイルの形式を決定します。私は通常XMLを使用します。これは、スコープごとに情報を整理でき、XMLツリーからの情報の保存と取得を処理するためのライブラリがすでに多数あるためです。

編集:C++の場合-http: //xerces.apache.org/xerces-c/

于 2009-07-07T02:23:12.853 に答える
0

ファイルから値を頻繁に取得する場合、特にそれらの値を更新(永続化)する必要がある場合は、データベースが最適なオプションです。また、データセットが大きくなるにつれて、優れたパフォーマンスが得られます。

于 2009-07-07T02:27:33.847 に答える