【问题标题】:Easy/Robust method for Settings Data File in C++C++ 中设置数据文件的简单/稳健方法
【发布时间】:2020-07-10 08:38:15
【问题描述】:

我有一个关于在我正在开发的 c++ 软件中读取settings.dat 文件的简单做法的问题。

我真的是 C++ 编程的业余爱好者……我是一名音乐家,对编写脚本以自动处理某些文档很感兴趣。请忍受我的大杂烩。

这就是我现在所拥有的。在我的主 C++ 程序中,我声明全局变量,读取 settings.dat 以获取我的运行设置,然后对许多数据文件执行各种操作。

/************************************/
/************************************/
/** now program.cpp *****************/
/************************************/
/************************************/

int show-warnings;
int indent-spaces;

// global variables

void readSettings()
{
    ifstream inputFile ("settings.dat");
    inputFile >> show-warnings;
    inputFile >> indent-spaces;
    inputFile.close();
}


int main(int argc, char *argv[])
{
    readSettings();
    // do various things
    return 0;
}






/************************************/
/************************************/
/** now: settings.dat ***************/
/************************************/
/************************************/
3 
1
2

这些设置没有标记。每次更改设置时,我都很难记住这些东西的顺序。

这就是我想要的:

/************************************/
/************************************/
/** i'd like settings.dat ***********/
/************************************/
/************************************/
indent-spaces: 3
show-warnings: yes
purpose: update

我试图通过 (1) 添加每个参数的含义,后跟一个冒号,以及 (2) 更改为 not-just-integers 参数,从而使我的 settings.dat 文件更有意义

如果我有 20 个参数,并且并非每次都在数据文件中指定所有参数,我想采用默认值。

有人可以指出一种在我的 c++ 软件中为这些参数管理变量的简单/稳健的方法吗?老实说,我什至不知道要在 Google 中搜索什么字词。

顺便说一下,我用的是Windows 7,MING++,直接编译。

非常感谢! -乔安娜

【问题讨论】:

  • 最简单的方法是使用预先存在的格式和处理它的库,例如 nlohmann github link 的 JSON。特别是可以通过复制 json.hpp 文件,将其粘贴到您的项目中,然后将其包含在任何需要它的文件中来集成。
  • 您必须编写 C++ 代码才能进行这种解析。也许重新考虑您的程序的设计,并将配置设置存储在std::unordered_map 中,每个设置都由其文本字符串标识,因此读取和解析它变得可笑地微不足道,并且检索特定的配置设置是通过其名称完成的。不是一个特别复杂的操作,但它确实需要一些 C++ 知识,而不是程序员的人可能无法掌握这些知识。就是这样。
  • 搜索 INI 解析器或 TOML 解析器。这些格式很方便。
  • 你期望的文件格式对我来说看起来像 YAML。试试github.com/jimmiebergmann/mini-yaml 只是一个头文件,构建或链接都不会有问题。
  • C++ 很难学。编写脚本不方便。如果您只需要脚本和自动化,请尝试 Python。 Python 适合初学者。它在学校作为第一种编程语言进行研究。此外,它也便于编写脚本。

标签: c++ data-files


【解决方案1】:

您的 settings.dat 看起来像 INI 文件。有很多读取 INI 文件的方法和库。你可以阅读他们的信息here

【讨论】:

  • 他只需要添加一个ini文件部分标题
  • 我认为它看起来更像 YAML 而不是 INI。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-10
  • 2016-03-04
  • 2018-05-18
  • 1970-01-01
  • 1970-01-01
  • 2013-10-19
相关资源
最近更新 更多