Einlesen von .txt Dateien
-
Hallo,
zur Zeit schreibe ich an einem Programm in c++, bei welchem ein String eingelesen werden soll, welches über mehrere Zeilen verfügt (eine Art Matrix in der die Elemente Punkte und Ziffern sind). Um nicht jedes mal alle Daten per Hand eintragen zu müssen, möchte ich diese in einer Textdatei speichern, welche beim Aufruf des Programms mittels < angegeben wird:
$./Testprog.exe < eingabe.txt
So steht es jedenfalls in meiner Aufgabenstellung, aber in der Praxis funktioniert das leider nicht. Meine Frage nun: Muss man für diese Art von Eingabe spezielle Änderungen im Code vornehmen (wenn ja, welche?), oder kann man sie wie eine normale Eingabe verwenden (was bei mir offensichtlich nicht klappt)?
P.S.: ich verwende Cygwin und den g++ Compiler.Schon mal vielen Dank im Voraus,
Ginkgo.
-
Naja, im Prinzip verhaelt sich das wie die stinknormale Eingabe ueber die Konsole. Soll heissen wenn du bei einer Eingabeaufforderung deines Programms
42 1337 3.14 IrgendEinStringOderSo quiteingeben muesstest, dann kannst du das auch so in die Datei schreiben. Im Prinzip ist das nur ne Umleitung, die dafuer sorgt, dass der Zeichenstrom aus der Datei genommen wird, statt der Zeichenstrom von der Tastatur. Das Programm muss sich dafuer eigentlich nicht veraendern.
-
Danke für die schnelle Antwort.
Bei mir funktioniert das aber nicht. Bei folgendem sehr einfachen Programm zum Beispiel, funktioniert die "normale" Eingabe ganz normal, aber mit der Textdatei nicht. Wenn ich 7 direkt eingebe wird diese ausgegeben, schreibe ich jedoch die 7 in die Textdatei erscheint Segmentation fault (Speicherabzug geschrieben).#include <iostream> int main (int i, char *n[]) { std::cout << n[1] << std::endl; return 0; }Kann das wohl an den einstellungen von Cygwin liegen?
-
"Es klappt nicht" ist ja eine sehr ausführliche Beschreibung ...
-
Du machst da keine "normale Eingabe", du wertest Kommandozeilenparameter aus. Normale Eingabe ist std::cin.
Und wenn du dein Programm ohne Parameter startest, fliegt es natürlich beim Zugriff auf n[1] auf die Schnauze.
-
Du musst von std::cin lesen. Wenn dein Programm bisher die Aufrufargumente auswertet, musst du es umschreiben.
-
Achso
Jetzt habe ich verstanden wie das zu verwenden ist. Danke nochmals.