Daten in einer Datei speichern
-
mtepe schrieb:
Wie würdet ihr vorgehen und warum?
Ich sage nur:
a) Zeige Eigeninitiative (du hast noch nicht einmal eine erste Überlegung gepostet)
b) Stichworte: std::map sowie Speichern von Containern (gibt es einen FAQ-Eintrag zu).cu André
-
Schau mal hier nach:
http://www.cplusplus.com/reference/iostream/fstream/ (zum dateihandling)ansonsten wie asc schon sagte.
-
Sorry hatte bis Heute noch keine Zeit mich der Sache wieder anzunehmen.
Also meine ersten Vorüberlegungen:
4 Methoden:
void dateiErstellen(); // Soll eine Datei Anlegen und Zeile x bis y mit Informationen zur Datei befüllen ab Zeile z kommen dann die Datensätze void inDateiSchreiben(int zeile); // Soll in Zeile z meine meine daten speichern: "Sting1" "String2"... int dateiAuslesen(); // Soll die Anzahl der Zeilen der Datei auslesen void ausDateiLesen(int zeile); // Soll Zeile z auslesenWeitere Ansätze/Überlegeungen folgen
-
Willst du das wirklich so machen? Die Zeile lässt sich in einer Datei nicht so schnell bestimmen. Besonders wenn du einige Male hintereinander einzelne Zeilen einlesen willst, lohnt es sich vielleicht, die Datei-Zeilen in einem Container zu speichern.
-
Und eventuell solltest du irgendwo einen Dateistream übergeben, außer natürlich du hast die Funktionen in einer Klasse und dort einen private Member welcher der Stream ist.
-
ich hab hier einen in basic. vielleicht ist er einen blick wert, weil er brutal einfach programmiert ist und trotzdem weit besser ist als die meisten.
dim shared deutsch as string dim shared englisch as string sub umkopieren open "lektion.tmp" for input as #1 open "lektion.txt" for output as #2 dim nummer as integer do line input #1 , deutsch line input #1 , englisch print #2 ,deutsch print #2 ,englisch loop while not eof(1) close #1 close #2 end sub sub speichernWennFalsch open "lektion.tmp" for output as #2 print #2, deutsch print #2, englisch open "lektion.txt" for input as #1 dim nummer as integer nummer=0 do line input #1 , deutsch line input #1 , englisch nummer=nummer+1 if nummer <> 6 then print #2 ,deutsch print #2 ,englisch endif loop while not eof(1) close #1 close #2 umkopieren end sub sub speichernWennRichtig open "lektion.tmp" for output as #2 open "lektion.txt" for input as #1 dim nummer as integer dim franzoesisch as string dim spanisch as string nummer=0 do line input #1 , franzoesisch line input #1 , spanisch nummer=nummer+1 if nummer <> 6 then print #2 ,franzoesisch print #2 ,spanisch endif loop while not eof(1) close #1 print #2, deutsch print #2, englisch close #2 umkopieren end sub sub vokabelAnzeigen open "lektion.txt" for input as #1 dim nummer as integer nummer=0 do line input #1 , deutsch line input #1 , englisch nummer=nummer+1 if nummer = 6 then print deutsch exit do endif loop while not eof(1) close #1 end sub function zeichenEinlesen as string dim ESC as string = chr(27) dim zeichen as string do zeichen=inkey if zeichen=ESC then end endif loop while zeichen="" return zeichen end function sub main dim LINKS as string = chr(255) + "K" dim RECHTS as string = chr(255) + "M" dim HOCH as string = chr(255) + "H" dim RUNTER as string = chr(255) + "P" do print "Frage:" vokabelAnzeigen print "RUNTER zum Weitermachen" dim taste as string do taste=zeicheneinlesen loop while taste <> RUNTER print englisch print "<-Falsch Richtig->" do taste=zeicheneinlesen if taste=LINKS then print "falsch" speichernWennFalsch exit do endif if taste=RECHTS then print "richtig" speichernWennRichtig exit do endif loop loop sleep end sub main
-
Nexus schrieb:
Willst du das wirklich so machen? Die Zeile lässt sich in einer Datei nicht so schnell bestimmen. Besonders wenn du einige Male hintereinander einzelne Zeilen einlesen willst, lohnt es sich vielleicht, die Datei-Zeilen in einem Container zu speichern.
Ich muss leider zugeben, dass ich nicht weis was mit einem Container gemeint ist. Ich bin jetzt ca 2Monate dabei ab und zu ein wenig C++ zu lernen und habe auch schon ein paar Programme nach programmiert und soweit verstanden. Nur Container waren bis lang nicht dabei. Da C++ mein erster Versuch ist das programmieren zu erlernen kann ich auch auf keine Erfahrungen mit anderen Programmiersprachen zurück greifen.
EDIT: Meinst du mit Container vielleicht sowas:
Ganze Datei in einen String lesen und dann das ganze nachher irgedwie in mehre strings teilen?
-
Okay, dann sind Container vielleicht nicht so wichtig. Es ist einfach relativ mühsam, nur eine bestimmte Zeile aus einer Datei auszulesen. Wenn es dir nur um die Übung geht, ist das okay, aber nicht dass du dir das angewöhnst.

Container sind Objekte, die mehrere Elemente vom gleichen Typ speichern können. Also ähnlich wie Arrays, aber viel komfortabler und flexibler. Wahrscheinlich wirst du die schon noch genug früh kennen lernen.

-
Container sind Datenstrutkuren zur speicherung von bestimmten Daten in einer bestimten Struktur.
Beispiele:
http://www.cplusplus.com/reference/stl/Edit:Hab mal das verwirrende "Nee" rausgenommen

-
Firefighter schrieb:
Nee Container sind Datenstrutkuren zur speicherung von bestimmten Daten in einer bestimten Struktur.
Und inwiefern widerspricht das meiner Beschreibung (mal abgesehen davon, dass er sich unter deiner Aussage wahrscheinlich nicht viel vorstellen kann)?
-
Nexus schrieb:
Firefighter schrieb:
Nee Container sind Datenstrutkuren zur speicherung von bestimmten Daten in einer bestimten Struktur.
Und inwiefern widerspricht das meiner Beschreibung (mal abgesehen davon, dass er sich unter deiner Aussage wahrscheinlich nicht viel vorstellen kann)?
Hab ich je gesagt das ich dir widerspreche? Ich hatte nur mal wieder zu spät gepostet
und deins überlesen :p
-
Ah, dann habe ich das "Nee" falsch interpretiert. Sorry für die Unterstellung.
