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...


Anmelden zum Antworten