BobKiller007 Geschrieben 21. Mai 2011 Teilen Geschrieben 21. Mai 2011 Hallo Leute, nun bi ich schon von Seite zu Seite gesprungen und überall werden verschiedene Möglichkeiten gezeigt, wie man eine .txt-Datei einliest und darin Text abspeichert. Nicht alle Codes funktionieren so, wie ich es will, also habe ich den Entschluss gefasst, mit dem Recherchieren aufzuhören und hier ein Thema zu erstellen. Ich hätte gerne einen sehr simplen Code, um eine Datei bestimmten Namens zu erstellen. Falls diese Datei schon vorhanden sein sollte, soll sie nicht ersetzt werden, sondern aus ihr ausgelesen. Dies soll wohl mit ios::noreplace|ios::in|ios::out möglich sein, allerdings meckert dann mein Compiler (Visual Studio 2008 Express Edition) bei ios::noreplace rum. Nachdem die Datei ausgelesen wurde, soll der Cursor am Ende platziert werden, damit man neuen Text hinzufügen kann. Anschließend, wenn das Ganze geschlossen wird, soll es abgespeichert werden und beim nächsten Aufruf wieder ausgelesen. Ich hätte jetzt zahlreiche Code-Beispiele, wie sich das ungefähr bewerkstelligen ließe, aber ich will ja nicht spammen. Also bin ich auf eure simplen und verständlichen Code-Beispiele gespannt. Danke im voraus und viele Grüße! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lilith2k3 Geschrieben 21. Mai 2011 Teilen Geschrieben 21. Mai 2011 klickstuhier Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
BobKiller007 Geschrieben 21. Mai 2011 Autor Teilen Geschrieben 21. Mai 2011 Folgender Code funktioniert nicht so, wie ich es will. Zuerst soll der Dateninhalt ausgegeben werden und anschließend soll die Eingabe in die Datei gespeichert werden. Mittels ofstream klappt´s ja, aber ifstream irgendwie nicht. #include <fstream> #include <iostream> using namespace std; int main() { char Eingabe[30], Ausgabe[30]; ifstream fin("Test.txt"); fin >> Ausgabe; cout << "\nEingabe: "; cin >> Eingabe; ofstream fout("Test.txt", ios::app); fout << Eingabe << endl; return 0; } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Hexagon Geschrieben 21. Mai 2011 Teilen Geschrieben 21. Mai 2011 Argh! Geht nicht ist keine gültige Fehermeldung... oder so... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
BobKiller007 Geschrieben 21. Mai 2011 Autor Teilen Geschrieben 21. Mai 2011 Oh, Verzeihung! Ich vergaß! Mit "funktioniert nicht so, wie ich es will" mein ich, dass die Einschreibung in die .txt-Datei zwar funktioniert, allerdings wird zu Beginn des Programmes der vorherige Inhalt der Textdatei nicht ausgelesen. Nun würde ich gerne wissen, wie ich den Code umzuschreiben habe, so dass meine gewünschte Funktionalität mit Erfolg durchgeführt werden kann. An dieser Stelle wäre noch zu erwähnen, dass ich gerne die gesamte Textdatei ausgelesen bekommen würde, damit man hinterher weiterschreiben kann. Allerdings kann ich mit "fin >> xy;" lediglich ein Wort einlesen und mit "fin.getline();" lediglich eine Zeile. Wie sähe der Code für die Einlesung des gesamten Textes aus? Ich hoffe, dass meine Beschreibung nun die Anforderungen für einen vernünftigen Beitrag erfüllt. Bitte um Rückmeldung! Gruß Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 22. Mai 2011 Teilen Geschrieben 22. Mai 2011 allerdings wird zu Beginn des Programmes der vorherige Inhalt der Textdatei nicht ausgelesen.Und woraus schließt du das? Du liest in das Array Ausgabe ein (hoffentlich ist das groß genug), machst aber weiter nichts damit. An dieser Stelle wäre noch zu erwähnen, dass ich gerne die gesamte Textdatei ausgelesen bekommen würde, damit man hinterher weiterschreiben kann.Was hat das eine mit dem anderen zu tun? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
BobKiller007 Geschrieben 22. Mai 2011 Autor Teilen Geschrieben 22. Mai 2011 In meinem vorherigen Code hatte ich zwar mit fin >> cAusgabe; den Inhalt (genauer: 30 Zeichen) eingelesen und vergessen, diese mit cout<<cAusgabe; auszugeben. Da es schwachsinnig ist, lediglich 30 Zeichen auszugeben, habe ich eine while-Schleife konstruiert, die mithilfe eines chars so lange die Datei zeichenweise ausliest, bis sie am Ende angelangt ist. Mein Problem hat sich somit geklärt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 22. Mai 2011 Teilen Geschrieben 22. Mai 2011 Zeichenweise einzulesen ist nicht besonders effizient, das geht auch auf einen Rutsch. Allerdings verstehe ich immer noch nicht, warum du das überhaupt tust. Du musst die Datei nicht komplett einlesen, bevor du neue Daten anhängen kannst. Oder dient das noch einem anderen Zweck, den du hier nur nicht erwähnt hast? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
BobKiller007 Geschrieben 22. Mai 2011 Autor Teilen Geschrieben 22. Mai 2011 Ja, das eine hat mit dem anderen nichts zu tun, wie du im vorherigen Beitrag schon geschrieben hast. Ich will lediglich, dass der Inhalt der .txt-Datei nochmal ausgegeben wird, damit man weiß, was dort zuletzt stand. Wenn dies getan ist, erfolgt die Eingabe des Benutzers. So weiß man beispielsweise, was man zuletzt geschrieben hat. Leider fällt mir keine andere Möglichkeit ein, als das Ganze zeichenweise auslesen zu lassen. Könntest du mir da bitte unter die Arme greifen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 22. Mai 2011 Teilen Geschrieben 22. Mai 2011 Zum reinen Ausgeben reicht das hier: ifstream fin("Test.txt"); cout << fin.rdbuf();[/code] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
BobKiller007 Geschrieben 22. Mai 2011 Autor Teilen Geschrieben 22. Mai 2011 Achso. Funktioniert auch super. Danke dir! Gibt es da denn irgendeinen Haken, oder etwas, was man beachten sollte? Ich hatte bis jetzt folgende Konstruktion verwendet: while(!fin.eof()) { fin.get(cAusgabe); cout<< cAusgabe; } Wo liegen denn die Vor- und Nachteile? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 23. Mai 2011 Teilen Geschrieben 23. Mai 2011 Gibt es da denn irgendeinen Haken, oder etwas, was man beachten sollte?Nicht dass ich wüsste. Wo liegen denn die Vor- und Nachteile?Deine Version hat den Nachteil, dass sie ineffizient ist. Außerdem ist sie falsch. Die eof-Methode ist nicht als Schleifenbedingung geeignet, weil sie erst dann true liefert, wenn das Einlesen schon einmal fehlgeschlagen ist. Damit gibst du das letzte Zeichen doppelt aus. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.