Hallo zusammen,
ich habe folgendes Problem:
Ich möchte gerne aus einer Datei Zahlen in mein Programm einlesen. Die Datei ist ein ASCII-Text-File und beinhaltet neben Text auch Zahlen, die ich gerne extrahieren möchte.
Beispiel:
population size (popsize): 50
number of generations (ngen): 100
mutation probability (pmut): 0.0001
crossover probability (pcross): 0.8
score frequency (scorefreq): 1
flush frequency (flusgfreq): 10
number of bits (precision): 16
number of best genomes (nbest): 3
convergence percentage (pconv): 1.01
generations to convergence (nconv): 40
(seed): 1
Die Bezeichnungen in den Klammern entsprechen den Variablennamen in meinem Programm. So soll also z.B. der Wert, der in der Zeile steht, wo der String "popsize" auftaucht, meiner Variablen popsize zugewiesen werden.
Ich bin ziemlicher Neuling in der C++-Programmierung und stehe jetzt ein wenig auf dem Schlauch, da ich gerne eine vernünftige und kompakte Lösung hätte.
Mein bisheriger Code:
Momentan sucht mein Code nur nach einem Doppelpunkt als Trennzeichen und nimmt den Wert dahinter. Nun habe ich aber ja mehrere Variablen, nach denen ich suchen muss. Was wäre denn hier eine elegante Lösung? Ich kann die Zahlen noch beliebig anordnen (anderes Trennzeichen, andere Position, etc.). Ich hätte nur gerne zu jeder Zahl einen Kommentar in der Zeile stehen.
Habe mir schon einiges aus Foren und Hilfeseiten zusammengesucht. Aber letztendlich fehlt mir noch ein wenig um mein Problem zu lösen.
Vielen Dank für jede Form der Hilfe und Anregung.
Gruß,
Stevie
ich habe folgendes Problem:
Ich möchte gerne aus einer Datei Zahlen in mein Programm einlesen. Die Datei ist ein ASCII-Text-File und beinhaltet neben Text auch Zahlen, die ich gerne extrahieren möchte.
Beispiel:
population size (popsize): 50
number of generations (ngen): 100
mutation probability (pmut): 0.0001
crossover probability (pcross): 0.8
score frequency (scorefreq): 1
flush frequency (flusgfreq): 10
number of bits (precision): 16
number of best genomes (nbest): 3
convergence percentage (pconv): 1.01
generations to convergence (nconv): 40
(seed): 1
Die Bezeichnungen in den Klammern entsprechen den Variablennamen in meinem Programm. So soll also z.B. der Wert, der in der Zeile steht, wo der String "popsize" auftaucht, meiner Variablen popsize zugewiesen werden.
Ich bin ziemlicher Neuling in der C++-Programmierung und stehe jetzt ein wenig auf dem Schlauch, da ich gerne eine vernünftige und kompakte Lösung hätte.
Mein bisheriger Code:
Code:
//declare variables for GA parameters
int popsize;
int ngen;
float pmut;
float pcross;
int scorefreq;
int flushfreq;
int precision;
int nbest;
float pconv;
int nconv;
unsigned int seed;
//read variables from input file
std::ifstream inputfile("GA_input.txt", std::ios::in);
if(!inputfile.is_open()) return 0;
std::string line;
while(getline(inputfile, line)) {
if (0 == line.length()) {
continue;
}
std::string::size_type firstIndex = line.find_first_of(":");
std::string sPopsize = line.substr(firstIndex + 1);
std::stringstream sstr(sPopsize);
sstr >> popsize;
}
inputfile.close();
Momentan sucht mein Code nur nach einem Doppelpunkt als Trennzeichen und nimmt den Wert dahinter. Nun habe ich aber ja mehrere Variablen, nach denen ich suchen muss. Was wäre denn hier eine elegante Lösung? Ich kann die Zahlen noch beliebig anordnen (anderes Trennzeichen, andere Position, etc.). Ich hätte nur gerne zu jeder Zahl einen Kommentar in der Zeile stehen.
Habe mir schon einiges aus Foren und Hilfeseiten zusammengesucht. Aber letztendlich fehlt mir noch ein wenig um mein Problem zu lösen.
Vielen Dank für jede Form der Hilfe und Anregung.
Gruß,
Stevie