Zeichenweise aus Datei lesen
-
Hallo,
Wie kann ich den Inhalt eienr Datei Zeichenweise einlesen?
-
so:
#include <fstream> #include <iostream> using namespace std; int main () { ifstream in ("bla.txt"); while (!in.eof ()) cout << (char)in.get (); }
-
Irgendwie geht es auf Win nicht
Es kommt immer diese "Programm hat einnen Fehler verursacht.." Meldung... Aber es muss erstmal nru auf Linux gehen
Noch eine Frage:
Am ende kommt immer ein ÿ (y mit Punkten drüber). Wie kann ich das ändern? Warum ist das so?
-
das liegt einfach daran, dass du EOF ausgibst, da die Funktion std::istream::eof erst war wird, wenn du bereits EOF gelesen hast
int main() { std::istream in("x"); char c; while(in.get(c)) std::cout << c; }
-
Habe es bei mir extra getestet und da ging es so ohne komische Zeichen
-
Ich nochmal...
Ich muss/will das einlesen der Zeichen in eine Klasse packen weil ich noch etwas damit vor hab...
Aber es geht nicht.. (wie kann es anders sein? :()class LoadFile { void OpenFile(char* file); char ReturnToken(); void CloseFile(); }; void LoadFile::OpenFile(char* file) { std::ifstream in(file); } char LoadFile::ReturnToken() { char token; in.get(token); std::cout << token; } void LoadFile::CloseFile() { in.close(); }
Meldung:
read.cpp:13: warning: all member functions in class `LoadFile' are private read.cpp: In method `char LoadFile::ReturnToken()': read.cpp:23: `in' undeclared (first use this function) read.cpp:23: (Each undeclared identifier is reported only once read.cpp:23: for each function it appears in.)
-
das sollte besser sein
class LoadFile { public: void OpenFile(char* file); char ReturnToken(); void CloseFile(); protected: std::ifstream in; }; void LoadFile::OpenFile(char* file) { in.open(file); } char LoadFile::ReturnToken() { char token; in.get(token); std::cout << token; return token; } void LoadFile::CloseFile() { in.close(); }
K
-
Danke...
So das ist jetzt die letzte Frage zu dem Thema
Ich hab die Klasse jetzt in der read.cpp aber ich will über die main.cpp auf Sie zugreifen können. Wie macht man das?
-
Du kannst in der Headerdatei (.h) die Klassendeklaration schreiben. In der .cpp die Definition und in deinem main Programm das/die Objekt(e) erzeugen.
//klasse.h #infdef klasse_h #define klasse_h class klasse { bla bla bla }; #endif
//klasse_main.cpp #include "klasse.h" Objekte erzeugen
//klasse.cpp #include "klasse.h" Definition deiner Klasse. Bereichsoperator (::) nicht vergessen.
-
Warum liest du nicht einfach ein C++ Tutorial, nur durch raten programmiert man nicht
http://tutorial.schornboeck.net/oop2.htm
http://tutorial.schornboeck.net/uebersetzungseinheiten.htm
-
Danke ihr!
@kingruedi
Du hast recht ich sollte mal ein utes Tutorial lesen! Aber ich habe hauptsächlich Tutorials gefunden die ich entweder nicht verstehe oder die sowas wie void main()... Aber tutorial.schornboeck.net scheint ein gutes zu sein
@all
Es geht nicht//main.cpp #ifndef IOSTREAM #define IOSTREAM #include <iostream> #endif #include "read.h" using namespace std; int main(int argc, char *argv[]) { LoadFile test; test.OpenFile("test.txt"); test.ReturnToken(); test.CloseFile(); return 0; }
//read.cpp #ifndef FSTREAM #define FSTREAM #include <fstream> #endif #include "read.h" using namespace std; void LoadFile::OpenFile(char* file) { in.open(file); } char LoadFile::ReturnToken() { char token; in.get(token); return token; } void LoadFile::CloseFile() { in.close(); }
//read.h #ifndef LoadFile #define LoadFile class LoadFile { public: void OpenFile(char* file); char ReturnToken(); void CloseFile(); protected: std::ifstream in; }; #endif
Meldung beim Compilen:
tester@Linux:~/source$ g++ -o prog main.cpp read.cpp In file included from main.cpp:5: read.h:10: syntax error before `;' read.h:11: anonymous class type not used to declare any objects main.cpp: In function `int main(int, char **)': main.cpp:11: `test' undeclared (first use this function) main.cpp:11: (Each undeclared identifier is reported only once main.cpp:11: for each function it appears in.) In file included from read.cpp:5: read.h:11: anonymous class type not used to declare any objects read.cpp:9: parse error before `(' read.cpp:14: parse error before `(' read.cpp:17: syntax error before `.' read.cpp:21: parse error before `(' tester@Linux:~/source$
//Edit die Compilermeldung zugefügt
//@ZuK Wenn du denkst das das mein Programm werden soll...Naja das eigendlich Programm werde ich selber progen
-
Plutonium schrieb:
Es geht nicht
einen kleinen beitrag zu "deinem" programm solltest du schon leisten.
nehme mal an es liegt erstmal daran wie du die klasse LoadFile verwendest.
K.