gpt4 book ai didi

c++ - 您如何将变量外包给持久数据?

转载 作者:行者123 更新时间:2023-11-28 08:32:52 25 4
gpt4 key购买 nike

基本上,我想让我的程序从硬盘驱动器磁盘中检索各种变量以供程序使用。我想,在询问细节之前,我应该验证这甚至是可能的。是吗?

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

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

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

所以“Systemdatapath”可以是一个映射键,它的值将是“/home/me/data”。当您的程序需要使用这些值时,它只需按键查找即可。

这是基础。最终你会想要美化它。例如,按类型检索值的方法。例如。 getString()、getInteger()、getFloat() 等

关于c++ - 您如何将变量外包给持久数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1090075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com