einzelne zeilen per ifstream
-
Ich machs immer so:
ifstream in("datei.txt");
string zeile;getline(in, zeile);
-
Hallo,
krieg aber ne fehlermeldung irgendwas von wegen konnte nciht auf den speicher ausgeführt werden
Ja, weil du keinen Speicher reserviert hast. Also ich würds so machen:
#include <iostream> using namespace std; const int MAX = 256; int main() { char blah[MAX]; // Das ist nen Array.... cin.getline(c, MAX); }
p.s.: Oder so wie Laalalaaa...dann kannste direkt nen String benutzen und musst dich nicht mit Zeiger rumplagen
-
CarstenJ schrieb:
Hallo,
krieg aber ne fehlermeldung irgendwas von wegen konnte nciht auf den speicher ausgeführt werden
Ja, weil du keinen Speicher reserviert hast. Also ich würds so machen:
#include <iostream> using namespace std; const int MAX = 256; int main() { char blah[MAX]; // Das ist nen Array.... cin.getline(c, MAX); }
p.s.: Oder so wie Laalalaaa...dann kannste direkt nen String benutzen und musst dich nicht mit Zeiger rumplagen
wofür steht denn das c?
-
für blah
mfg, KdeE
-
Ups, sorry, da stand vorher was anderes. Ersetze c durch blah
-
hmm habs jetzt anders gelöst weil mein code durch die zeiger total verwurschtelt is ^^
if(point == 1) { ofstream out(filename.c_str()); for(f=0; f<data.anzahl();++f) { out<<data.showName(f)<<endl; out<<data.showNummer(f)<<endl; } cout<<"Daten in "<<filename<<" gespeichtert"<<endl; } if(point == 2) { ifstream in(filename.c_str()); cout<<"Lade "<<filename<<endl; getline(in, intName); getline(in, intNumber); data.neuerName(intName, intNumber); }
danke für die mühe
neiiiiin jetzt liest der ja nur die ersten 2 zeilen einwie mach ichs, dass er 2 zeilen weiterspringt bzw. immer die gelesenen zeilen löscht?
-
Du musst solange aus der Datei lesen, bis das Ende (EOF) erreicht ist. Da gab es schon des öfteren Fragen zu, benutze einfach mal die Suchfunktion. Nebenbei solltest du dir vielleicht mal ein Tutorial oder sowas angucken. Da kann immer ganz nützlich sein.
-
hab ich schon...stand aber ne menge nicht drin
also wenn ich dass hier mache:if(point == 2) { string intName; string intNumber; ifstream in(filename.c_str()); cout<<"Lade "<<filename<<endl; while(!in.eof) { getline(in, intName); getline(in, intNumber); data.neuerName(intName, intNumber); } }
dann krieg krieg ich:
--------------------Konfiguration: meinbuch - Win32 Debug-------------------- Kompilierung läuft... main.cpp D:\Programme\C++ files\MSDev98\MyProjects\meinbuch\main.cpp(103) : error C2276: '!' : Ungueltige Operation auf Ausdruck einer gebundenen Member-Funktion D:\Programme\C++ files\MSDev98\MyProjects\meinbuch\main.cpp(103) : fatal error C1903: Weiterverarbeitung nach vorhergehendem Fehler nicht moeglich; Kompilierung wird abgebrochen. Fehler beim Ausführen von cl.exe. meinbuch.exe - 2 Fehler, 0 Warnung(en)
und mit:
while(in.eof == false) { getline(in, intName); getline(in, intNumber); data.neuerName(intName, intNumber); }
wird nichts geladen
-
Du solltest dir das mal genauer angucken:
http://www.cppreference.com/cppio_details.html#eofEinige Problem lösen sich dann praktisch von selbst....
-
oh gott... sorry manchmal bin ich a bissl dusselig
die klammern vergessen...meine gütedanke nochmal