stdio vs iostream
-
hi,
ich hab mal eine kurze frage, welche der beiden varianten besser is, um mit dateien zu arbeiten ..
ich habe eigentlich immer mit iostream gearbeitet, bis ich mir vor nicht allzu langer zeit einen neuen rechenr gekauft habe und auf dem hatte der bcb plötlich probleme mit iostream.
da ich mich mit fprintf und fscanf ( bzw was für andere funktionen gibt es noch aus stdio für dateien ?? ) nicht so wirklich aus kennen und deswegen nun auch probleme beim proggen habe, wollte ich mal fragen, was sich her lohnt: sich in stdio einzuarbeiten oder versuchen iostream wieder zum laufen zu brigen ??
das ständige 0pf4

-
Bring die iostreams wieder zum laufen. stdio ist für C++ absolut ungeeignet und extrem anfällig für alle Arten von Sicherheitsproblemen. Und die Freaks die mit Größe und Geschwindigkeit ankommen, stehen mit printf nicht wirklich besser da.
-
Ganz einfache Sache:
Programmierst du C dann nimm stdio.
Programmierst du C++ dann nimm fstream.
-
thx für die schnelle antwort ..
-
hab dann nochmal ne konkrete frage zu einem problem, will deswegen aber nicht gleich nen neuen thread anfangen ...
der compiler meldet immer nach dem ersten durchlauf (wenn er das erstemal zu while zurück springt) accessviolation...
wenn ichs so schreibe
in.open(tmp.c_str(),4); in.seekg(0); while(in.read(buffer,buff_size)) { ... }landet er bei der zeile in der "_ios_base.h"
bool good() const { return _M_iostate == 0; }bei
in.open(tmp.c_str(),4); in.seekg(0); while(!in.eof()) { in.read(buffer,buff_size); ... }landet er bei
bool eof() const { return (_M_iostate & eofbit) != 0; }was muss ich da ändern, damit ich die datei stück für stück einlesen kann ??
-

#include <fstream> #include <iostream> int main() { std::ifstream in("datei.txt"); std::string str; while(std::getline(in,str)) std::cout << str; }
-
naja ... ich wollte damit nicht nur testdateien auslesen, sondern generell dateien und das möglichst in gleichgroßen stücken ... zeilenweise is da glaub ich nicht so das richtige, da ich ja nicht genau weis, wie lang nun so eine zeile is .. vlt is sie ja auch leer ...
-
int main() { std::ifstream in("datei.txt"); char str[20]; while(in.read(str,20)) std::cout << str << ' '; std::cout << '\n'; }
-
das is ja das problem ... er will das so nicht machen .. kann es sein, das er probleme mit einigen dateitypen bzw größen hat ?? als buffer-größe sollter er doch auch größere werte wie z.b. 10240 ( ^=10 kb ) nehmen, oder ??
-
Am Stack kanns da schon happig werden, versuch dein Array mal am Heap zu erstellen:
char* buf = new char [10*1024]; // hier arbeit erledigen delete[] buf;MfG SideWinder
-
hilft leider auch nicht .. er hängt sich immer noch auf .. immer _ios.h oder _ios_basis.h .. kann es an projekt- oder systemeinstellungen liegen ?? nutze ein laptop mit centrino und win xp mit sp1
-
Ich verschieb dich mal in das BCB Forum, wenn dieser Testcode schon nicht ging. Dann liegt das wohl am Compiler.
-
jo, wäre nett von dir ..
PS: sry, das ich mich so lange nicht gemeldet habe ..
-
Dieser Thread wurde von Moderator/in kingruedi aus dem Forum Rund um die Programmierung in das Forum Borland C++ Builder (VCL/CLX) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.