einzelne zeilen per ifstream
-
wie kann ich damit einzelne zeilen einer datei einlesen?
-
Hallo,
ifstream ist von istream abgeleitet
-
aha
aber wie kann ich damit einzelne zeilen einlesen
-
Hallo,
wie machst du es denn mit dem cin-Objekt ?
-
cin>>variable;
achne... cin.getline(varibale, laenge)asooo
ifstream in;
in.getline;??
ich versuchs mal
-
bugs....
in.getline(intName, sizeof(intName));
in.getline(intNumber, sizeof(intNumber));gibt mir den fehler:
--------------------Konfiguration: meinbuch - Win32 Debug-------------------- Kompilierung läuft... main.cpp D:\Programme\C++ files\MSDev98\MyProjects\meinbuch\main.cpp(99) : error C2664: 'class std::basic_istream<char,struct std::char_traits<char> > &__thiscall std::basic_istream<char,struct std::char_traits<char> >::getline(char *,int)' : Konvertierung d es Parameters 1 von 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' in 'char *' nicht moeglich Kein benutzerdefinierter Konvertierungsoperator verfuegbar, der diese Konvertierung durchfuehren kann, oder der Operator kann nicht aufgerufen werden D:\Programme\C++ files\MSDev98\MyProjects\meinbuch\main.cpp(100) : error C2664: 'class std::basic_istream<char,struct std::char_traits<char> > &__thiscall std::basic_istream<char,struct std::char_traits<char> >::getline(char *,int)' : Konvertierung des Parameters 1 von 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' in 'char *' nicht moeglich Kein benutzerdefinierter Konvertierungsoperator verfuegbar, der diese Konvertierung durchfuehren kann, oder der Operator kann nicht aufgerufen werden Fehler beim Ausführen von cl.exe. meinbuch.exe - 2 Fehler, 0 Warnung(en)
-
Hallo,
also wenn das int vor dem Variablen Namen das bedeutet, was ich vermute, kann es auch nicht gehen. Es muss schon ein char* sein:
http://www.cppreference.com/cppio_details.html#getline
-
int steht da nicht für int
die vars sind strings...aber was ist denn char* ?
wieso sternchen?
ich hab aus den strings jetzt char* s gemacht...das programm startet, und ich will was aus der datei lesen per
cin.getline(intName, sizeof(intName));
krieg aber ne fehlermeldung irgendwas von wegen konnte nciht auf den speicher ausgeführt werden
-
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