while (file_stream.eof() == false) { unsignedshort string_lenght = 0; file_stream.read((char*)(&string_lenght), sizeof(unsignedshort)); // Länge des Strings einlesen char* string = newchar[string_lenght + 1]; // Zum terminieren nochn Zeichen hinzu... file_stream.read(string, string_lenght); // String einlesen string[string_lenght] = 0; // Da die Strings nicht terminiert in der Datei vorliegen std::cout << string_lenght << ": " << string << std::endl; // Nur Temporär m_items.push_back(std::string(string)); // String in den Vector einfügen ... delete [] string; // Brauchen wir net mehr => kann weg ... }
file_stream.close();
Soweit funzt das auch fast wie ich es haben will. Nur hab ich jetzt noch das Phänomen, das er noch am Ende einmal folgendes ausgibt:
Code:
0:
... nur warum? Wie kann ich das verhindern? Scheint mir so als würde der genau einmal zu oft durchgehen Wobei die Strings die ich sonnst einlese alle korrekt sind ... Jemand ne Idee? Wäre dankbar für ne Antwort.
Zeig mal deine Datei, ich schätze mal du liest einfach ein Zeichen zu wenig, wodurch er erst bei dem nächsten read 1. Null liefert (für dein string-length) 2. EOF erreicht. -- class God : public ChuckNorris { };
Hmm ich mein da ich alle Elemente die ich in der Datei finde in einen Vector packe kann ich natürlich auch immer das letzte Element löschen ... das ist ja aber nicht der Sinn ... d.h. hat jemand eine Idee was falsch sein könnte? Danke
naja sagte ich doch bereits - du liest das EOF nicht da du ja exakte angaben in deiner datei hast, d.h nach dem letzten read steht nur noch das EOF im stream. prüf einfach nach deinem length-read ob die größe == 0 ist und mach ggf ein continue. -- class God : public ChuckNorris { };