Z
Hallo zusammen,
ich habe mir ein Programm geschrieben, welches mir ein Textfile einliest und daraus Parameter in einen vector speichert:
vector<float> readParameters(string filename){
vector<float> params(20);
fstream fi;
char cstring[512];
string param;
fi.open(filename.c_str(), ios::in);
size_t j = 0;
while(!fi.eof()){
fi.getline(cstring,sizeof(cstring)); //Read Line
if(cstring[0]=='#') continue; //Ignore Comment-Lines
size_t start=0;
size_t stop=0;
for(size_t i=0; i<512; i++){
if(cstring[i]=='=') start=i; //Startindex of Parameter-Value
if(cstring[i]==';'){ //Stopindex of Parameter-Value
stop=i;
break;
}
}
for(size_t i=start+1; i<stop; i++){
param.append(&cstring[i],1); //cut and transform Parameter-Value to String
}
cout << param << " - "; //param enthält noch den richtigen Wert, z.B. "0.015"
params[j++] = strtof(param.c_str(),NULL); //transform string to float-number, atof geht hier auch nicht
cout << params[j-1] << "\n"; //Hier ist nur noch ein Integer
param = ""; //reset dummy;
}
fi.close();
return params;
}
Das funktioniert von der Konsole auch soweit gut, nur wenn ich diese Funktion mittels:
g_signal_connect(button, "clicked", G_CALLBACK(simulate), NULL);
aufrufe (sie ist Teil der Funktion simulate()), funktioniert die umwandlung mit strtof() oder atof() nichtmehr richtig. Die Strings werden in einen Integer umgewandelt. Der rest der Funktion scheint soweit korrekt durchzulaufen, und wenn ich sie ohne / vor dem gtk Sachen durchlaufen lasse, funktioniert auch alles wie es soll.