使用 C++ 项目将数据保存在磁盘上

Save data on disk with a C++ project

我在使用 CLion 创建 C++ 项目时遇到问题。 我的软件应该通过磁盘加载和保存用户的配置文件,以便他每次打开程序时不会丢失自己的设置。显然,如果我知道 .txt 文件的预定义路径,这应该不是问题,但我需要我的软件始终知道该文件所在的位置。 CLion 是否允许创建一种使用 .cpp 文件构建的 txt 文件? 是否可以为独立程序创建"internal memory"

当我在 CLion 中 运行 它时,我将项目目录设置为 "working directory",因此它知道在哪里可以找到 "data.txt" 但是当我 运行 编译程序来自终端(我在 Linux 上工作)找不到 data.txt。 如何使已编译项目的 "working directory" 永久化? 非常感谢。

您有多种选择。

1) 使用 chdir(在 POSIX 上)之类的东西来始终将您的 CWD(当前工作目录)更改为已知位置。然后加载相对于该目录的数据文件。

2) 将您的数据存储在类似于 QSettings 或已经知道如何从系统全局数据库中获取内容的类似内容中。

3) 找到您的可执行文件的路径(在 Linux 上,阅读 /proc/self/exe - 其他平台上存在这样做的其他解决方案)然后从相对于可执行文件的已知位置读取您的数据.

4) 将数据 嵌入 您的可执行文件(是的,它 可以在磁盘上动态重写您的可执行文件以存储里面的数据)然后从你自己的可执行文件中读取数据。

5) 将数据存储在用户必须配置并告诉您的某个位置(如命令行参数),然后从那里读取。

6) 从相对于用户主目录的已知位置读取。

可能还有更多我没想到的..

除非你绝对、肯定地必须并且能够很好地阐明问题以记录你从头开始的原因,否则不要重新发明轮子。

您的目标 OS/Distro 将采用标准方式在系统范围和每个用户的基础上保存配置文件。使用它们!例如,在许多 Linux 发行版中,您会发现许多用户配置都保存在 ~/.config 目录中 - 这一切都归功于易于使用且最重要的是经过全面测试的系统库!