Problem beim aulesen mit streams in VS C++

tmace85

Grünschnabel
Hi leutz,

ich will einfach nur mehrere Sätze in einen Datei speichern und sie dan seperat wieder aufrufen können. Das mit dem Speichern klappt ja schon aber das mit dem aufrufen klappt net. Programmiere in Microsoft Visual C++ .NET 2003.


Und mein zweites Problem ist, das ich noch etwas anhängen will ohne dass das was vorher in der Datei wahr überschrieben wird.

Hier mein Code:


#include "stdafx.h"
#include <iostream>
#include <string>
#include <fstream>
#include <stdio.h>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
//--------------------------------------------------------------------------------------------
//1. Variablen Deklaration
char t[100];
char v[100];
char x[100];
char b[100];

//char name[255];
//--------------------------------------------------------------------------------------------
//2.Einlesen in Variablen
cout<<"Bitte geben sie was ein: ";
cin.getline(t,100); // Einlesen mit Lehrzeile

cout<<endl;

cout<<"Bitte geben sie noch was ein: ";
cin.getline(x,100); // Einlesen mit Lehrzeile

cout<<endl;

cout<<"Bitte geben sie wieder was ein: ";
cin.getline(v,100); // Einlesen mit Lehrzeile




//--------------------------------------------------------------------------------------------
//3.Einlesen in eine Textdatei und speichern

system("CLS");
/*
cout<<"Geben Sie den Dateinamen in der Datei in der sie Speicher wollen ein: ";
cin.getline(name,255);
*/

ofstream file("Kassette01.txt");
file<<t<<endl;
file<<v<<endl;
file<<x<<endl;
file.close();




//--------------------------------------------------------------------------------------------
//4.Auslesen der einzelnen Zeilen der Textdatei

fopen ("Kassette01.txt","r"); // Datei öffnen zum lesen


file.close();
//fclose("Kassette01.txt"); // Datei wieder schließen
//fopen fwright fclose

//--------------------------------------------------------------------------------------------
//5.Dateien anhängen
FILE* datei = NULL;


cout<<"Bitte geben sie schon wieder irgendwas ein: ";
datei = fopen ("Kassette01.txt","a+"); //Datei öffnen zum anhängen
cin.getline(b,100);



//--------------------------------------------------------------------------------------------
//6. Wieder auslesen
ifstream file01("Kassette01.txt");
fopen ("Kassette01.txt","r"); // Datei öffnen zum lesen


file01.close();


//--------------------------------------------------------------------------------------------
//7.Ende des Programms

system("PAUSE");
return 0;
}





Bedanke mich schonmal im voraus für eure Hilfe.
 
moin


Zum zweiten Problem, öffne deine Datei zum schreiben so:
Code:
ofstream file("Kassette01.txt", ios_base::app);

Außerdem ist es ganz schlecht mal ofstream und mal fopen zu benutzen!


mfg
umbrasaxum
 
Zuletzt bearbeitet:
moin


Zum ersten Problem:
Gib den Satz einfach Zeichenweise aus, bis ein Punkt kommt.


mfg
umbrasaxum
 
Danke für deine schnelle antwort,

ich habe mich dummerweise etwas blöd bei der ersten Pronlmestellung ausgedrückt.

Es sind keine Sätze sonder Title von Filmen. Da es da meist keine Punkte gibt stehe ich wieter vor einem Rätsel.

Danke schonmal im voraus für die Beantwortung
 
moin


Tja, dann wirst du nicht drum rum kommen dir irgendeine Methode auszudenken um die Titel auseinander zu halten.
Du könntest sie von Hand durch ein eindeutiges Symbol trennen, oder jedem Titel einen Speicherplatz von 20 Elementen geben. Das sind 2 einfache Möglichkeiten wo du um eine der beiden nicht drum rumkommst, solange es simpel bleibt.


mfg
umbrasaxum
 
Sie haben ja einen Speicherplatz und sind in einer Datei gespeichert.

Kann ich sie irgendwie auslesen so das sie wenigstens auf dem Bildschirm erscheinen.
Ich sollte sie aber seperat auslesen können ohne Speicherung in einer Variable....



MFG tmace85
 
moin


Ohne zwischenspeicherung in einer Variable wüsste ich das jetzt nicht.
Du du immernoch keine genaueren Informationen gibst frag ich nochmal.
Wie sind die Titel in der Datei gespeichert?
Hat jeder Titel ne eigene Zeile?


mfg
umbrasaxum
 
Entschuldige !

Ja ise haben jeder eine Unterschiedliche Zeile.
Sie werden beim einlesen in Variablen gespeichert. Und natürlich müssen sie auch wieder in solche ausgeben werden. Wahr mein Fehler. Bloss ich kann nicht wenn ich nur die Zeile 2 brauch auch nur die ausgeben.

MFG
tmace85
 
moin


Dann isses doch ganz einfach.
Du packst erstmal die ganze Datei in ein char-Array.
Dadurch steht in dem Array dann zwischen jedem Titel ein '\n'.
Um den zweiten Titel auszugeben gehst du im Array zum ersten '\n' und gibst bis zum zweiten '\n' aus.

Bei bedarf kann ich dir auch ein kleines Beispiel fertig machen.


mfg
umbrasaxum
 

Neue Beiträge

Zurück