题
基本上,我希望有我的程序从程序中使用的硬盘驱动器的磁盘检索各种变量。我想,询问细节之前,我应该验证甚至有可能。是什么?
如果是,什么是最好的方法是什么?我见过使用的.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”可能是一个地图项并将其值将是“/家/我/数据”。当程序需要通过密钥才能使用它只是看起来它的值。
这是基础。最终,你将要美化它。例如,方法类型来检索值。例如。的getString(),getInteger(),getFloat(),等等。
其他提示
您确定您的应用程序的.ini文件的格式。我通常使用XML,因为这样你可以通过范围组织你的信息,并已经有一堆库来处理存储和从XML树检索信息的。
编辑:对于C ++ - http://xerces.apache.org/xerces-c/
如果你打算从文件中经常拉的价值观,特别是如果你需要更新(坚持),这些值,数据库是一个很好的选择。它作为您的数据集的增长也会给你不错的表现。