C++ 如何将变量分配给持久数据?

C++ 如何将变量分配给持久数据?,c++,ini,persistent-data,C++,Ini,Persistent Data,基本上,我想让我的程序从硬盘上检索各种变量,以便在程序中使用。我想,在询问细节之前,我应该确认这是可能的。是吗 如果是,最好的方法是什么?我见过.ini文件的使用,但我不知道如何专门从.ini文件检索数据。它是否与您为了确保变量始终在x线上而处理的文本文件相同?例如: ifstream variables("variables.ini"); //some code later //assume line 'x' holds a variable if(variables.good()) {

基本上,我想让我的程序从硬盘上检索各种变量,以便在程序中使用。我想,在询问细节之前,我应该确认这是可能的。是吗

如果是,最好的方法是什么?我见过.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++。

你决定应用程序的.ini文件的格式。我通常使用XML,因为这样您就可以按范围组织信息,而且已经有一堆LIB来处理从XML树存储和检索信息


<>编辑:对于C++ -< /p> 如果你经常从文件中拉取值,尤其是如果你需要更新(坚持)这些值,那么数据库是一个不错的选择。随着数据集的增长,它还将为您提供良好的性能。

您需要解决的第一个问题是谁和为什么。你的选择将遵循这些

那么谁(或什么)将访问数据?如果只是程序本身,那么您可以按照自己的意愿存储数据—二进制文件、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()等。

太好了,这正是我需要知道的。如果只是为了简单起见,我想我会将它保留在.ini中。我只是想确保,只要我以我自己的方式解析它,并以我自己的方式访问它,是否有约定(或其他什么)就无关紧要了+1和选定的答案