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

您不必担心数据的特定行。您只需逐行阅读文件。空行或注释行被扔掉。您记下您所在的部分并处理键/值对。

有很多方法可以将解析后的文件存储在程序中。一个简单的方法可能是将部分名称和键连接成地图的键。(键/值对的)值将是地图的数据。

所以“Systemdatapath”可能是一个映射键,它的值是“/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 回答