質問

基本的に、私は私のプログラムは、プログラムで使用するためのハードドライブのディスクからの様々な変数を取得したいです。私は推測する、詳細について尋ねる前に、私はそれも可能であることを確認しなければなりません。それはありますか?

もしそうであれば、最良の方法は何ですか?私は、.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 ++です。

役に立ちましたか?

解決

あなたが対処する必要がある最初の質問は、誰が、なぜです。 の方法のものとは従います。

のあなたのオプション

、いったい誰(または何)がデータにアクセスするのでしょうか?バイナリファイル、XML、データベース、iniファイル、何を - それだけでプログラム自体であるなら、あなたはあなたが欲しいしかし、データを保存することができます。データは、彼らがその後、実行する前に、簡単に編集することができ、INI、などのテキストファイルを、それを変更することができますので、ユーザが容易にアクセスできるようにする必要があれば、意味があります。他のフォーマットで保存されたデータを編集するためには、保存されたパラメータを操作するだけで全く別のプログラムを記述する必要があります。たぶんそれはあなたの状況に理にかなっているか、そうでないかもしれないが、それは多くの作業になります。

あなたはINIのルートを行くことを選択した場合は、

あなたは正しい軌道に乗っています。彼らはただのテキストファイルです。共通フォーマット(通常括弧内)セクションを有することであり、セクション内の、キー/値のペア。通常のラインは、セミコロンでの設定の間で前後に反転することをお勧めしますユーザーのための素敵なタッチを開始コメントます。

このようなので、何かます:

[System]
    datapath = /home/me/data

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

あなたはあなたのデータのための特定の行を心配する必要はありません。あなただけの行毎にファイルをお読みください。空またはコメント行が放り込まれます。あなたはあなたが何であるかのセクションのノートを取り、あなたは、キー/値のペアを処理します。

あなたのプログラムで解析されたファイルを格納するための多くの方法があります。単純なものは、マップのキーにセクション名とキーを連結することであってもよいです。 (キー/値ペアの)値は、マップのデータとなります。

だから、「Systemdatapathは、」1つのマップのキー可能性があり、その値は「/ホーム/私/データ」になります。あなたのプログラムがキーで、それはちょうどそれをルックアップする値を使用する必要があるときます。

これは基本です。最終的に、あなたはそれを飾ることになるでしょう。例えば、方法は種類によって値を取得します。例えば。 getString()はgetInteger()はgetFloat()など。

他のヒント

あなたはあなたのアプリケーションの.iniファイルの形式を決めます。あなたはスコープによって、あなたの情報を整理することができますし、格納およびXMLツリーから情報を取り出す処理するためのlibsの束がすでに存在しているので、私は通常、XMLと連携ます。

編集:C ++のための - http://xerces.apache.org/xerces-c/

あなたが頻繁にファイルから値を引っ張っするつもりなら、特にあなたがそれらの値を更新する(持続)する必要がある場合、データベースは素晴らしい選択肢です。データセットが大きくなるように、それはまた、あなたに良いパフォーマンスが得られます。

scroll top