Problem mit wifstream
-
Hi C++ler,
ich habe ein Problem mit einer Date, die ich in einen wstring einlesen möchte, dabei wird wohl (mein Parser gibt mir
Identifier: M Identifier: FILES Symbol: ( Identifier: X86 Symbol: )aus) etwas aus dem Arbeitspeicher genutzt, was meinem Programm nicht gehört

Da ich mit Stringverarbeitung nicht so wirklich auskenne tippe ich auf ein falsches einlese:
// Book ist Element meiner Klasse vom Typ wstring void Parser::OpenBook(wstring FileName){ wifstream File; File.open(FileName, ios::in); long FileStart; long FileEnd; wchar_t* Spoon; if (File.is_open() == false){ ExitProcess(0); } FileStart = File.tellg(); File.seekg(0, ios::end); FileEnd = File.tellg(); File.seekg(0, ios::beg); Spoon = new wchar_t[(FileEnd-FileStart) + 2]; memset(Spoon, '\0', (FileEnd-FileStart) + 2); File.read(Spoon, FileEnd-FileStart); Spoon[(FileEnd-FileStart) + 1] = '\0'; Spoon[(FileEnd-FileStart)] = '\0'; Book = Spoon; BookLength = Book.length(); delete[] Spoon; File.close(); return; }Vielen Dank im Voraus
-
Da fällt mir vieles auf, was unschön ist. SeppJ korrigiert dich gleich.
Aber wenn du einfach den kompletten Inhalt der Datei in einen String willst, wieso so umständlich?
wifstream File(FileName); // So ist btw das öffnen richtig - gleich mit dem Konstruktor, und ohne das unnötige Flag std::wstring content(std::istreambuf_iterator<wchar_t>(File), std::istreambuf_iterator<wchar_t>());Edit:
Book = Spoon;Sag mir bitte nicht, Book ist ein Zeiger. Bitte.
-
Book wird wohl ein wstring sein
-
Aber dann braucht man auch nicht BookLength als eigene Membervariable

Der Code ist wirklich grottig(!) - besonders "schön" ist dabei
ExitProcess(0);Einen Zweizeiler in 30 Zeilen aufzublähen, ist wohl eindeutig auf Anfänger zurückzuführen...
Und je mehr ich im Detail lese, umso gruseliger wird es, besonders was die Indizes beim Spoon-Zugriff angeht...