Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » ifstream liest mehr zeichen als vorhanden

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
04.07.2010, 23:17 Uhr
cmos



Hallo,
ich hatte meien Shaderdateien sonst mit CFile geladen. Das hat auch funktioniert.
Wollte aber keine Bindung mehr an Windows haben und habe daher das Einlesen
mittels ifstream getan. Das Problem ist, das ich am Ende im Buffer eine Reihe von
Zeichen habe die da nicht hingehörn.

Die Filelänge erhalte ich durch

C++:
file.seekg(0,ios::end);
unsigned long size = static_cast<unsigned long>(file.tellg());
file.seekg(ios::beg);



Und hier das Einlesen

C++:
bufFragment = new char[size+1];        
file.read(bufFragment, size);
file.close();
bufFragment[size] = '\0';    



Die Datei wird eingelesen, aber am ende steht so etwas ähnliches wie eine
Reihe von IIIIIIIIIII. Wenn ich die Datei mit CFile einlese, habe ich nicht diese
komischen Zeichen hinten dran.

Woher kommt das ?

Grüße,
cmos
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
05.07.2010, 00:23 Uhr
cmos



Hat sich erldigt. Habe den buffer mit memset vorher gelöscht, dann gehts.
Aber komisch, der buffer ist so groß wie die Datei. Mit CFile funktioniert das
ohen Probleme, nur nicht mit ifstream.

Grüße,
cmos
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
05.07.2010, 21:28 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


hi,
evtl datei nicht binär geöffnet? sonst ists textmodus und da wandelt er dir sonst die neuzeilen um, dadurch ist "size" dann kleiner als die size die du vorher erhalten hast.
--
class God : public ChuckNorris { };

Dieser Post wurde am 05.07.2010 um 21:29 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
05.07.2010, 21:35 Uhr
cmos



Hallo und Danke,
also die Datei hab ich als text geöffnet und nicht binär.
Also soll ich die Textdatei binär öffnen und dann in den
buffer einlesen ?

Grüße cmos
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
06.07.2010, 13:56 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


wenn du die textdatei binär öffnest, hast du auch alle \r\n. Im Textmodus, werden die \r's automatisch "überlesen". daher diese diskrepanz zwischen size und realen-gelesenen bytes.

aber: "read" sollte doch die anzahl der gelesenen bytes zurückliefern, oder nicht?
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
06.07.2010, 14:19 Uhr
cmos



ok,
vielen dank.

grüße,
cmos
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: