我想问一下以下想法是否可行:
我想使用存储在文件中的变量名称及其值,如下所示:
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();
但是当我尝试运行整个代码时,我遇到了分段错误(核心转储)错误,我知道这会崩溃,因为我将输出放在这段代码之前和之后。
答案 0 :(得分:0)
您可以读取一个文件,然后在该文件中获取值,并将其分配给代码中预先存在的变量。您可以使用类似getline的东西。如果您不知道变量的顺序,但是它们在外部文件中有名称。也许数组会有所帮助?您可以为每个位置创建一个具有名称和值的结构。读入它们,然后根据名称将它们分配给您创建的预先存在的变量。另一种选择是在文件中搜索特定的单词,然后分配它们。这取决于您要采取的路线。