Daten aus string Spaltenweise in Textdatei speichern
-
@GruenerKobold sagte in Daten aus string Spaltenweise in Textdatei speichern:
Ich würde hier gerne die Lösung für andere Leute posten aber dann würde @Swordfish davon profitieren
bruhahahahahahaaa
-
@Swordfish sagte in Daten aus string Spaltenweise in Textdatei speichern:
ja, ich bin der v0lln00b.
Zuviel Energie und keine Ahnung wohin damit?
Kein Problem, such dir doch mal einen Badminton Verein. Die lösen dein Problem im Handumdrehen.
-
@GruenerKobold
Also @Swordfish brauch deine Hilfe ganz sicher nicht. Du bist Anfänger und hier im Forum gibts ne Menge Leute die wirklich gut C++ können. Swordfish gehört dazu, ist aber ein Troll durch und durch. Ich gehe also stark davon aus er hätte eine bessere, sauberere und performantere Lösung gefunden als du. Bleib also am besten höflich und spring nicht auf Trolle wie ihn an
-
@Zhavok sagte in Daten aus string Spaltenweise in Textdatei speichern:
@GruenerKobold
Also @Swordfish brauch deine Hilfe ganz sicher nicht. Du bist Anfänger und hier im Forum gibts ne Menge Leute die wirklich gut C++ können. Swordfish gehört dazu, ist aber ein Troll durch und durch. Ich gehe also stark davon aus er hätte eine bessere, sauberere und performantere Lösung gefunden als du. Bleib also am besten höflich und spring nicht auf Trolle wie ihn anIst ja für den fremden Fragesteller nicht ersichtlich, wer Swordfish ist. Von dem hier gezeigten Benehmen her, würde die Einschätzung passen. Absolut daneben und nicht hilfreich.
-
@GruenerKobold sagte in Daten aus string Spaltenweise in Textdatei speichern:
@Swordfish
Du scheinst ja auch nicht keinen Plan zu haben wie man an deinem Kommentar sieht.Stimmt. Von doppelter Verneninung schon mal gehört?
-
Hallo @GruenerKobold ,
das ist eine Standardfrage, deshalb lachen dich die anderen aus... verzeihe ihnen, jeder fing mal klein an...
-
@EinNutzer0 sagte in Daten aus string Spaltenweise in Textdatei speichern:
Hallo @GruenerKobold ,
das ist eine Standardfrage, deshalb lachen dich die anderen aus... verzeihe ihnen, jeder fing mal klein an...
Frage nach spaltenweisen Schreiben. Link führt zu zeilenweisem Lesen. Buchstäblich das exakte Gegenteil.
Was ist denn los heute? Ist irgendwie allgemeiner Trolltag und jeder weiß es, nur ich nicht? Das ist doch eine ganz normale, klare Frage. Wieso kommen nur Schrottantworten, teils in ziemlich pampigen Tonfall, und das von etablierten Forennutzern?
-
@SeppJ sagte in Daten aus string Spaltenweise in Textdatei speichern:
Buchstäblich das exakte Gegenteil
Er braucht wohl beides, du Schlauberger
-
@SeppJ sagte in Daten aus string Spaltenweise in Textdatei speichern:
Was ist denn los heute?
Weiß ich nicht, es ist Mo., der 7. November... Hat Karneval schon angefangen?
-
@EinNutzer0 sagte in Daten aus string Spaltenweise in Textdatei speichern:
@SeppJ sagte in Daten aus string Spaltenweise in Textdatei speichern:
Buchstäblich das exakte Gegenteil
Er braucht wohl beides, du Schlauberger
In seinem Text und in seinem Code ist nicht ein einziger Hinweis darauf, dass er irgendetwas lesen möchte ...
-
@GruenerKobold
Wenn du das Format des Files selbst bestimmen kannst, dann würde ich vorschlagen die Daten einfach in der Reihenfolge reinzuschreiben wie sie im Programm entstehen.Dann kannst du die ersten "AAA, BBB, CCC" in das File schreiben, und wenn der zweite Satz Werte fertig wird schreibst du den einfach hinten dran.
In einem File Spalten hinzuzufügen ist wie @SeppJ schon geschrieben hat eben nicht möglich.
D.h. die einzige Möglichkeit das zu machen wäre das File komplett neu zu schreiben. D.h. du müsstest z.B. das alte File zeilenweise lesen, dann im Speicher an jede gelesene Zeile die gewünschte Spalte anhängen, und die neue Zeile dann wieder in ein 2. File rausschreiben. Und dann, wenn du alle Zeilen durch hast, das 2. File über das 1. drüberkopieren. Dauert lange das zu programmieren und ist auch nicht sonderlich performant in der Ausfürhung. Macht man nicht wenn man nicht muss.
-
@hustbaer sagte in Daten aus string Spaltenweise in Textdatei speichern:
D.h. die einzige Möglichkeit das zu machen wäre das File komplett neu zu schreiben. D.h. du müsstest z.B. das alte File zeilenweise lesen, dann im Speicher an jede gelesene Zeile die gewünschte Spalte anhängen, und die neue Zeile dann wieder in ein 2. File rausschreiben. Und dann, wenn du alle Zeilen durch hast, das 2. File über das 1. drüberkopieren. Dauert lange das zu programmieren und ist auch nicht sonderlich performant in der Ausfürhung. Macht man nicht wenn man nicht muss.
Also warum du mit 2 Files agierst und das so umständlich machst versteh ich nicht oder sollte das zur einfacheren Erklärung sein? Denn der einfachste Weg ist doch das File Zeilenweise bis zum Zeilenumbruch in einen String zu lesen: Dann packt man die neue "Spalte" hinten an und den Zeilenumbruch. Das ganze jetzt für jede Zeile wiederholen und wenn man alle Zeilen durch hat, dann das ganze in die gleiche Datei wieder schreiben. Fertig ist das ganze, kein Zauberwerk und keine großartige Sache.
-
@CTecS sagte in Daten aus string Spaltenweise in Textdatei speichern:
@hustbaer sagte in Daten aus string Spaltenweise in Textdatei speichern:
D.h. die einzige Möglichkeit das zu machen wäre das File komplett neu zu schreiben. D.h. du müsstest z.B. das alte File zeilenweise lesen, dann im Speicher an jede gelesene Zeile die gewünschte Spalte anhängen, und die neue Zeile dann wieder in ein 2. File rausschreiben. Und dann, wenn du alle Zeilen durch hast, das 2. File über das 1. drüberkopieren. Dauert lange das zu programmieren und ist auch nicht sonderlich performant in der Ausfürhung. Macht man nicht wenn man nicht muss.
Also warum du mit 2 Files agierst und das so umständlich machst versteh ich nicht oder sollte das zur einfacheren Erklärung sein? Denn der einfachste Weg ist doch das File Zeilenweise bis zum Zeilenumbruch in einen String zu lesen: Dann packt man die neue "Spalte" hinten an
Die neue Spalte steht aber erst ein paar Zeilen weiter in der Datei.
-
@CTecS sagte in Daten aus string Spaltenweise in Textdatei speichern:
Also warum du mit 2 Files agierst und das so umständlich machst versteh ich nicht oder sollte das zur einfacheren Erklärung sein? Denn der einfachste Weg ist doch das File Zeilenweise bis zum Zeilenumbruch in einen String zu lesen: Dann packt man die neue "Spalte" hinten an und den Zeilenumbruch. Das ganze jetzt für jede Zeile wiederholen und wenn man alle Zeilen durch hat, dann das ganze in die gleiche Datei wieder schreiben. Fertig ist das ganze, kein Zauberwerk und keine großartige Sache.
Zwischendurch lagerst du die ganze Datei, egal wie groß, im Speicher zwischen? Wenn beim Schreiben etwas schief geht, sind die Ursprungsdaten unwiederbringlich futsch? Und das, um einen einzigen Move am Ende zu sparen?
Du schätzt falsch ein, wo die Unterschiede liegen und was sie bedeuten. Als Faustregel sind Streamingalgorithmen eigentlich immer besser, wenn sie in Frage kommen.
-
Noch ein Nachtrag: Der Grund, warum das nicht geht, ist ja, dass Dateien ein diffuser Zeichenstrom sind, mit einem Anfang, einer Stelle an der man gerade ist, und einer Möglichkeit das Ende zu erkennen. Da kann man also nichts einfügen, sondern nur anhängen oder ändern. Das ist der kleinste Nenner dessen, was man so allgemein als Datei bezeichnet.
Aber das stimmt ja nicht für alles was man so als Datei bezeichnet. Denn zumindest wenn die Datei physisch auf einem Blockgerät gespeichert ist (also das, was die meisten Nicht-Informatiker unter einer "Computerdatei" verstehen würden), dann besteht die Datei aus klar nummerierten Blöcken in einer bestimmten Reihenfolge. Und da könnte man auch weitere Blöcke mitten drin einfügen. Das ist aber Sache des Dateisystems, an dem man normalerweise tunlichst nicht herumschrauben sollte, und weshalb die Dateienschnittstelle eines Betriebssystems und die darauf aufbauende C++-Dateienschnittstelle einen nicht daran lassen.
Ich dachte, das wäre alles, aber der Neugierde habe ich noch einmal geguckt, und siehe da: Linux (und zwar nur Linux, nicht allgemeines Posix!) hat tatsächlich einen Systemcall, um (Block-)Dateien auf Blockebene zu manipulieren. Das heißt, man kann tatsächlich Blöcke in der Mitte einfügen oder entfernen. Für Windows hatte ich nicht die Energie, das auch noch zu recherchieren.
Das ist in diesem speziellen Fall so natürlich nutzlos. Ein Block hat eine feste Größe, die vom Dateisystem (oder gar der Hardware) fest vorgegeben ist, und man kann daher nur an den Grenzen dieser Blöcke etwas einfügen oder entfernen, und das Eingefügte und Entfernte hat dann exakt die Blockgröße. Was halt seltenst exakt mit den Ansprüchen für die Spalten zusammenfallen wird. Aber wenn unbedingt ein Dateiformat benötigt, das Einfügen oder Löschen in der Mitte erlauben soll, dann kann man so etwas tatsächlich aufziehen, wenn man diese Beschränkungen im Hinterkopf behält. Das könnte zum Beispiel ganz nützlich sein, wenn man ein Datenbanksystem schreiben möchte.
-
@SeppJ sagte in Daten aus string Spaltenweise in Textdatei speichern:
@CTecS sagte in Daten aus string Spaltenweise in Textdatei speichern:
Also warum du mit 2 Files agierst und das so umständlich machst versteh ich nicht oder sollte das zur einfacheren Erklärung sein? Denn der einfachste Weg ist doch das File Zeilenweise bis zum Zeilenumbruch in einen String zu lesen: Dann packt man die neue "Spalte" hinten an und den Zeilenumbruch. Das ganze jetzt für jede Zeile wiederholen und wenn man alle Zeilen durch hat, dann das ganze in die gleiche Datei wieder schreiben. Fertig ist das ganze, kein Zauberwerk und keine großartige Sache.
Zwischendurch lagerst du die ganze Datei, egal wie groß, im Speicher zwischen? Wenn beim Schreiben etwas schief geht, sind die Ursprungsdaten unwiederbringlich futsch? Und das, um einen einzigen Move am Ende zu sparen?
Du schätzt falsch ein, wo die Unterschiede liegen und was sie bedeuten. Als Faustregel sind Streamingalgorithmen eigentlich immer besser, wenn sie in Frage kommen.
Wieso sollte ich das falsch einschätzen? Ich bin nicht davon ausgegangen das ich explizit auch noch darauf hinweisen muss das man die alte Datei vorher als .bak umbenennen kann/sollte bevor man die neue Datei schreibt. Das sollte doch jeder für sich selbst entscheiden können.
Mit zum Schluss 3 Dateien rum zu frickeln macht die ganze Sache sicher auch nicht Sicherer und klar kann man seine Daten als Stream raus schreiben. Möglichst noch die Rohdaten einfach hintereinander, eine Version der einzelnen Dateistände ist dann auch nicht mehr drin. Aber das auseinander zu nehmen würde den Rahmen hier sprängen und auch weit vom eigentlichen Thema ab kommen. Denn Möglichkeiten gibt es viele zum Ziel zu kommen, nur ist immer die Frage in wieweit der TO das versteht.
-
@CTecS sagte in Daten aus string Spaltenweise in Textdatei speichern:
Mit zum Schluss 3 Dateien rum zu frickeln macht die ganze Sache sicher auch nicht Sicherer
Wieso sollte ich das falsch einschätzen?
Weil du nicht einmal korrekt bis 3 zählen kannst…
-
Ich bin nicht davon ausgegangen das ich explizit auch noch darauf hinweisen muss das man die alte Datei vorher als .bak umbenennen kann/sollte bevor man die neue Datei schreibt.
Darum geht es nicht. Lies den Text von SeppJ noch einmal.
Wenn dein Programm (oder der Computer) mittendrin abstürzt, hinterlässt dein Programm eine fehlerhafte Datei. Bei SeppJ ist das nicht der Fall.
-
@SeppJ sagte in Daten aus string Spaltenweise in Textdatei speichern:
Weil du nicht einmal korrekt bis 3 zählen kannst…
aber ich troll ^^
-
@SeppJ sagte in Daten aus string Spaltenweise in Textdatei speichern:
@CTecS sagte in Daten aus string Spaltenweise in Textdatei speichern:
Mit zum Schluss 3 Dateien rum zu frickeln macht die ganze Sache sicher auch nicht Sicherer
Wieso sollte ich das falsch einschätzen?
Weil du nicht einmal korrekt bis 3 zählen kannst…
Schade das du dich auf so ein Niveau begibst, im allgemeinen dachte ich das hier über Probleme diskutiert wird aber hier darf sich der Mod ausdrücken wie er mag, solange es nicht der schnöde Forenteilnehmer macht, ich dachte ich hatte da mal irgend wo was von Etikette gelesen
@wob sagte in Daten aus string Spaltenweise in Textdatei speichern:
Ich bin nicht davon ausgegangen das ich explizit auch noch darauf hinweisen muss das man die alte Datei vorher als .bak umbenennen kann/sollte bevor man die neue Datei schreibt.
Darum geht es nicht. Lies den Text von SeppJ noch einmal.
Wenn dein Programm (oder der Computer) mittendrin abstürzt, hinterlässt dein Programm eine fehlerhafte Datei. Bei SeppJ ist das nicht der Fall.
Ich bin der Meinung das es keinen Unterschied macht, denn wenn er beim schreiben der Zwischendatei ab stürzt ist das Ergebnis das gleiche, das gleiche gilt beim schreiben der Enddatei, denn auch mit der org. Datei und der Zwischendatei kann man nichts anfangen, aber wie gesagt das ist meine Meinung und ihr seit anderer Meinung, das ist legitim.