在C ++中使用存储在文件中的变量中的值

时间:2019-07-12 17:34:29

标签: c++

我想问一下以下想法是否可行:

我想使用存储在文件中的变量名称及其值,如下所示:

tcmb = 2.73 

outmap = output/all_skies_map.fits 

我想读取文件并存储这些值(即tcmb = 2.73将值2.73存储在名为tcmb的变量中,例如: outmap = output/time_ordering_information.fits,我要保存最后一部分: time_ordering_information.fits在名为outmap的字符串变量中 )

有可能吗?, 好吧,到目前为止我所做的是:

ifstream input(inifile.c_str());
  char line[4048];

  char *var = NULL;
  char *value = NULL;

  int cnt = 0;
  while (!input.eof()){
  input.getline(line, 4048);
  if (input.eof())
  break;

  sscanf(line,"%s %*c %s \n", var, value);

  if(strstr(var, "clsf"      ) == var){clsfile   = value; ascii=false;}
  if(strstr(var, "map"       ) == var){fname0    = value; ascii=false;}
  if(strstr(var, "poin"      ) == var){pointing  = value; ascii=true;}
  if(strstr(var, "angle"     ) == var){angle_bol = value; ascii=false;}
  if(strstr(var, "outcrossc" ) == var){fname1    = value;}
  if(strstr(var, "outstokes" ) == var){fname2    = value;}
  if(strstr(var, "outmap"    ) == var){fname3    = value; ascii=true;}
  if(strstr(var, "outoi"     ) == var){fname4    = value;}
  if(strstr(var, "velo"      ) == var){velo      = atof(value);}
  if(strstr(var, "bgal"      ) == var){bgal      = atof(value);}
  if(strstr(var, "lgal"      ) == var){lgal      = atof(value);}
  if(strstr(var, "tcmb"      ) == var){tcmb      = atof(value);}
  if(strstr(var, "freq"      ) == var){freq      = atof(value);}
  if(strstr(var, "poin_m"    ) == var){poin_m    = atoi(value);}
  if(strstr(var, "max_l"     ) == var){max_l     = atoi(value);}
  if(strstr(var, "nskies"    ) == var){nskies    = atoi(value);}


  cerr << var << endl;



  cnt++;

  }

  input.close();

但是当我尝试运行整个代码时,我遇到了分段错误(核心转储)错误,我知道这会崩溃,因为我将输出放在这段代码之前和之后。

1 个答案:

答案 0 :(得分:0)

您可以读取一个文件,然后在该文件中获取值,并将其分配给代码中预先存在的变量。您可以使用类似getline的东西。如果您不知道变量的顺序,但是它们在外部文件中有名称。也许数组会有所帮助?您可以为每个位置创建一个具有名称和值的结构。读入它们,然后根据名称将它们分配给您创建的预先存在的变量。另一种选择是在文件中搜索特定的单词,然后分配它们。这取决于您要采取的路线。