Zum Inhalt springen

Hilfe: .txt-Datei mit C++ ein- und auslesen


BobKiller007

Empfohlene Beiträge

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!

Link zu diesem Kommentar
Auf anderen Seiten teilen

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;

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

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ß

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?
Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.
Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...