c项目变量太多,怎么选择性存储变量值

一个时进项目建了很多个类的对象。根据项目不同阶段,关注的变量值也会不断变化,这些变量随着时间的推进,会发生不同的变化

目前我是用手动fprintf记录每一帧的每一个变量的值。还要宏定义记录变量数量。也就是说,每次我更新存储变量名的时候,都要改三个地方,一个要写一下变量名,然后写变量值,最后改存储的变量数量

想请指教,能否通过读取一个文件的方式决定我存储那些变量?这样我就只需要把变量名写在那里,就自动完成以上三个操作

可以通过读取一个文件的方式来决定存储哪些变量。这样你就只需要在文件中写下你想要记录的变量名,然后通过读取文件,动态获取变量名,完成以上三个操作。

具体实现可以参考以下步骤:

创建一个文本文件,例如variables.txt,在其中写入要记录的变量名,每行一个变量名。
在代码中添加读取文件的逻辑,在逐行读取的过程中,获取到每个变量名。
根据每个变量名使用反射机制,得到对应类的字段或方法,并获取其值。
将变量名和对应的值写入目标文件,可使用BufferedWriter等类写入到文件中。
通过这种方式,你可以灵活地在文件中定义需要记录的变量名,而无需手动更新存储变量名的代码内容。

以下内容引用自GPT,有用望采纳:
当需要记录大量变量的值时,手动编写并修改代码可能会变得冗长且容易出错。为了提高代码的可维护性,可以使用一种更灵活的方式,例如使用配置文件。

配置文件是一个文本文件,其中存储了变量的名称。通过读取配置文件,您的程序可以决定要记录哪些变量的值。这样做的好处是,无需修改代码,只需修改配置文件即可。下面是一种实现的示例步骤:

  1. 创建一个配置文件(例如,config.txt),在其中列出您希望记录的变量的名称。每个变量名应单独一行。
variable1
variable2
variable3
  1. 在您的代码中,使用文件操作函数(例如fopenfscanf等)打开并读取配置文件。
FILE* file = fopen("config.txt", "r");
if (file == NULL) {
    printf("无法打开配置文件\n");
    return -1;
}

char variableName[100];
while (fgets(variableName, sizeof(variableName), file) != NULL) {
    // 删除换行符
    variableName[strcspn(variableName, "\n")] = '\0';

    // 根据变量名称记录变量的值
    recordVariableValue(variableName);
}

fclose(file);
  1. recordVariableValue函数中,将提供的变量名称和相应的变量值记录在文件中。
void recordVariableValue(const char* variableName) {
    // 根据变量名找到对应的变量并记录其值
    // ...

    // 将变量名和值写入日志文件
    FILE* logFile = fopen("log.txt", "a");
    if (logFile == NULL) {
        printf("无法写入日志文件\n");
        return;
    }

    fprintf(logFile, "%s: %d\n", variableName, variableValue);
    fclose(logFile);
}

使用配置文件的好处是,您可以在不修改代码的情况下轻松地添加、移除或更改记录的变量。只需修改配置文件即可。此外,您还可以使用不同的配置文件来记录不同阶段的变量值,以便更好地跟踪和分析项目的演变。

希望这个示例能够帮助您理解如何通过读取配置文件来记录变量的值。

我认为这个是可以的,因为我使用的是qt,qt有一个qsetting类,就是用来存储配置文件使用的,那么c++应该同样可以,我读取文件内的键值对,然后对变量进行更改(前提是变量可更改),更改完成后,需要将更改后的值再次以键值对的方式再写入文件内

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

TSEPro11_Setup.exe 百万军中取上将首级如探囊取物, 千万行里改关键源码在弹指瞬间。 功能超强的程序编辑器! https://blog.csdn.net/zhao4zhong1/article/details/126596717 https://bbs.csdn.net/forums/tsepro11 https://gitcode.net/zhao4zhong1/tsepro11 https://gitee.com/zhao4zhong1/tsepro11/raw/master/TSEPro11_Setup.exe