使用C++;项目 我对用CYON制作C++项目有问题。 我的软件应通过磁盘加载并保存用户的配置文件,以便不会在每次用户打开程序时丢失自己的设置。显然,如果我知道.txt文件的预定义路径,这不应该是一个问题,但是我需要我的软件始终知道该文件的位置。 CLion是否允许创建一种使用.cpp文件构建的txt文件? 是否有可能为独立程序创建“内部内存”

使用C++;项目 我对用CYON制作C++项目有问题。 我的软件应通过磁盘加载并保存用户的配置文件,以便不会在每次用户打开程序时丢失自己的设置。显然,如果我知道.txt文件的预定义路径,这不应该是一个问题,但是我需要我的软件始终知道该文件的位置。 CLion是否允许创建一种使用.cpp文件构建的txt文件? 是否有可能为独立程序创建“内部内存”,c++,clion,C++,Clion,当我在CLion中运行它时,我将项目目录设置为“working directory”,因此它知道在哪里可以找到“data.txt”,但当我从终端(我在Linux上工作)运行编译的程序时,它找不到data.txt如何将已编译项目的“工作目录”永久化? 非常感谢。您有几种选择 1) 使用类似于chdir(在POSIX上)的方法始终将CWD(当前工作目录)更改为已知位置。然后,加载与该目录相关的数据文件 2) 将数据存储在类似QSettings或类似的文件中,这些文件已经知道如何从系统全局数据库获取数

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

您有几种选择

1) 使用类似于
chdir
(在POSIX上)的方法始终将CWD(当前工作目录)更改为已知位置。然后,加载与该目录相关的数据文件

2) 将数据存储在类似
QSettings
或类似的文件中,这些文件已经知道如何从系统全局数据库获取数据

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

4) 将数据嵌入可执行文件中(是的,可以在磁盘上动态地重新写入可执行文件以将数据存储在其中),然后从自己的可执行文件中读取数据

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

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


可能是我没有想到的更多。

你有几个选择

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

2) 将数据存储在类似
QSettings
或类似的文件中,这些文件已经知道如何从系统全局数据库获取数据

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

4) 将数据嵌入可执行文件中(是的,可以在磁盘上动态地重新写入可执行文件以将数据存储在其中),然后从自己的可执行文件中读取数据

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

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


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

不要重新发明轮子,除非你绝对、积极地必须并且能够很好地阐明问题,以记录你从头开始的理由


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

不要重新发明轮子,除非你绝对、积极地必须并且能够很好地表达问题,以记录你从头开始的理由


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

您可能应该像其他linux应用程序一样将此文件保存在用户配置文件的隐藏文件夹中。顺便说一句,我认为解决此问题的方法与
Clion
无关。这取决于您的平台。您可能应该像其他linux应用程序一样将此文件保存在用户配置文件的隐藏文件夹中。顺便说一句,我不认为这个问题的解决方案与
Clion
有关。这取决于您的平台。注意:您的防病毒软件可能会讨厌选项4。@user4581301可能是这样(如果您正在使用),但它是一个选项,所以我想我应该提及它,因为我打算“提及所有选项”)。是的。这是警告,不是谴责。如果可执行文件一直神秘地消失或类似,需要注意的东西。我通常喜欢6和3的组合。我的大脑现在不工作了。我想是时候注销了。@user4581301什么是防病毒软件?我是说2018年?人们还在用吗?@SergeyA我必须在工作中使用它。它经常删除我的程序,因为它以前从未见过这些程序,重新编译后程序的签名发生了变化,程序用实验硬件做了一些奇怪的事情,超出了办公桌面的标准,或者某个无名的神认为我应该过个糟糕的一天。很有趣。您应该试试。注意:您的防病毒软件将不喜欢选项4。@user4581301可能是这样(如果您正在使用),但这是一个选项,所以我想我应该提及它,因为我打算“提及所有选项”)。是的。这是警告,不是谴责。如果可执行文件一直神秘地消失或类似,需要注意的东西。我通常喜欢6和3的组合。我的大脑现在不工作了。我想是时候注销了。@user4581301什么是防病毒软件?我是说2018年?人们还在用吗?@SergeyA我必须在工作中使用它。它会定期删除我的程序,因为它以前从未见过这些程序,程序的签名会在以后更改