Config lesen
-
Hi,
Als Übung wollte ich einen Config Reader schreiben.
Bin noch unerfahren in C++.
Hier mal der Code:char* config::get(char* var) { this->read(); std::string buffer,buffer2; std::string::size_type loc,loc2; for(unsigned int i=1;i<=line.size();i++) { buffer = line[i-1]; loc = buffer.find_first_of('"'); if(loc == std::string::npos) { loc2 = buffer.find_last_of('"',loc); if(loc2 == std::string::npos || loc != loc2) { buffer2 = buffer.substr(0,loc); if(buffer2.length() != 0) { for(unsigned int i = 0;i < buffer2.length();i++) { if (buffer2[i] ==' ') { buffer2.replace(i,1,""); } } if(strcmp(var,buffer2.c_str()) == 0) { buffer2 = buffer.substr(loc,loc2); char* returnvalue = (char*)buffer2.c_str(); return returnvalue; } } } } } return "NULL"; }Die Funktion Read macht nichts anderes als die Datei in den vector line einzulesen.
Jedoch bekomme ich immer NULL zurück obwohl in der Datei steht:
testvar "123"Warum funktioniert das so nicht?

-
rück das erstmal richtig ein. Den fehler hab ich jetz kein bock zu suchen, allerdings kann das so gar nicht klappen:
Du gibtst quasi buffer2.c_str() zurück. buffer2 ist aber nur in der funktion bekannt und wird nach dem aufruf zerstört, der char* zeigt also sonstwohin. Warum gibst du nicht std::string zurück und nimmst ein const std::string& als parameter an?
-
Hi,
Ist doch gut eingerückt^^Der Wert wird doch noch zurückgegeben bevor er zerstört wird.
Zerstört wird laut Lernbuch erst sobald die Klammer kommt und der wert wird ja bei return zurückgegeben.