首页 > 解决方案 > 在数组中存储配置值

问题描述

我有一个配置文件,其中包含三列和 n 行。每列行都有一组相应的值。我的配置文件将如下所示:

12345    10    20
67890    30    40
...
...

所以 id 12345 对应的值是 10 和 20,而 67890 对应的值是 30 和 40。

我只想知道是否有更有效/更短的方法来做到这一点。我觉得我在这里加倍了向量和字符数组存储值。我试图将每个值存储在单个数组中,而不是像这样存储在[1][3]数组中:

|12345|10|20|

它像这样存储:

|1|2|3|4|5|1|0|2|0|

理想情况下,我想将它们存储在第一个选项中。

#include <iostream>
#include <vector>
using namespace std;

int main()
{
    FILE *fp;
    fp = fopen("configFile.conf","r");
    
    char a[20];
    char b[20];
    char c[20];
    
    vector<string> aVect;
    vector<string> bVect;
    vector<string> cVect;
        
    int i = 0;
    int j = 0;
    
    while(!feof(fp)){
        fscanf(fp, "%s\t%s\t%s", a, b, c);
        
        aVect.push_back(a);
        bVect.push_back(b);
        cVect.push_back(c);
        
        i++;
        j = 0;
    }
}

标签: c++parsingconfiguration

解决方案


有多种读取和存储配置文件值的方法。

例1:

struct LineData
{
  int a;
  int b;
  int c;
};
...
LineData ldata = {0};
std::vector<LineData> configFileData;
...
fscanf(fp, "%d\t%d\t%d", &ldata.a, &ldata.b, &ldata.c);
configFileData.push_back(ldata);
...

推荐阅读