使用 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 目录中 - 这一切都归功于易于使用且最重要的是经过全面测试的系统库!
我在使用 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 目录中 - 这一切都归功于易于使用且最重要的是经过全面测试的系统库!