Textdatei schreiben - finde fehler nicht..
-
Ich habe ein programm geschrieben, welches daten aus einer textdatei ausliest, sie verändert und wieder abspeichert.
Das laden funktioniert perfekt, aber es gibt einen kleinen fehler mit dem speichern.
Die normale datei sieht so aus:[ARCDATAFILE_V1] [audi] farbe=schwarz ps=219 kmh=256 [bmw] farbe=silber ps=136 kmh=194
eingelesen, abgespeicher und wieder in die textdatei geschrieben, sieht sie jedoch so aus:
[ARCDATAFILE_V1][audi]farbe=schwarz kmh=256 ps=219 [bmw]farbe=silber kmh=194ps=136
Hier der code der fehlerhaften speiherfunktion, welche die daten aus einer 2dimensionalen map ließt und abspeicher.
arc::ret8 arc::file::CDataFile::save(str _name){ std::fstream ofile; ofile.open(_name, std::ios::out | std::ios_base::binary); if(!ofile.is_open()) return ERROR_FILEPATH; ofile << "[ARCDATAFILE_V1]"; for(std::map<str, std::map<str,str> >::iterator xx = this->data->begin(); xx != this->data->end(); xx++){ // groups ofile << std::endl << "[" << xx->first.c_str() << "]"; for(std::map<str,str>::iterator yy = xx->second.begin(); yy != xx->second.end(); yy++){ // variables ofile << std::endl << yy->first.c_str() << "=" << yy->second.c_str(); } } ofile.close(); return ERROR_NONE; }
die map ist folgendermaßen aufgebaut:
std::map<std::string group, std::map<std::string var_name, std::string var_value>* data;
-
Dein Stream ist "binary"!
Benötugst Du einfach nur LF oder CR/LF Sequenzenin der Textdatei.
Bei Letzterem lass dass binary weg.
-
danke, hat funktioniert
PS: ..das passiert wenn man einfach teile aus seinen funktionen für binary dateien kopiert