Text Datei auslesen und einzeln speichern
-
Ich habe eine txt Datei und will diese auslesen.
In ihr stehen 26 zahl von 1 bis 26 in zeile 1-26.
ich will diese nun einzeln auslesen und mache das so:if (codierrichtung == 2) // decoding { cin.get(); ifstream file; string fileName = "" + partition + ":\\schlüssel.txt"; file.open(fileName.c_str(), ios::in | ios::binary); // oeffen im Binaer-Modus if(file) { file.seekg(0, ios::end); // zum Ende Datei springen long fileSize = file.tellg(); // Dateigroesse auslesen file.seekg(0); // Zurueck zum Anfang springen char *text = new char[fileSize]; // Speicher fuer Text anlegen long lines = 0; char *schluesselinhalt[27]; for (;lines <= 26;) { lines = lines + 1; file.read(schluesselinhalt[lines], 1); } file.close(); cout << text; delete text; // Speicher aufraeumen } else { cout << "Fehler!"; } cin.get(); } // endif decoding return EXIT_SUCCESS; }Warum geht das denn nicht ? --> Er stürzt dabei ab (kein compiler Error)
-
Wenn du die Array-Version von
new- alsonew[]verwendest, musst du den Speicher mitdelete[]und nicht mitdeletewieder freigeben.Beim nächsten Mal wäre es ausserdem hilfreich, Laufzeitfehler und Position des Absturzes anzugeben.
-
Er stürzt immer bei der for schleife ab (konnte es soweit eingrenzen)
und ich weiß nicht ganz genau was du meinst ich bin im moment sehr schwer von begriff.
schon etwas spät

-
new []
delete []http://www.informatik-gruppe.de/projekte/dateien/datei_ld_speichern.htm
Schlimm das sowas in einem Tutorial vorkommt.

-
long lines = 0; string inhalt[29]; int zeile = 0; ifstream file; string fileName = partition + ":\\schlüssel.txt"; int alllines = 0; for (;alllines<26;) { alllines = alllines + 1; zeile = zeile + 1; file.open(fileName.c_str()); if(file) { string text; // Haupttext int zeilen = 0; while(!file.eof()) { string txt; // Buffer getline(file, txt); text = txt + "\n"; zeilen++; if(zeile == zeilen) // gesuchte Zeile erreicht { cout << text; break; // Zeile gefunden, Einlesen abbrechen } lines = lines + 1; inhalt[lines] = text; } file.close(); } else { cout << "Fehler!"; } //endelse }kann mir das jemand korigieren ich versteh einfach nicht was hier falsch ist...
möglicherweise der selbe fehler, wie zu beginn ?
er gibt noch acht zeilen aus und dann will er nicht mehr.
wenn ich die zeile die er ausgeben soll zuerst immer wieder angebe dann macht er es aber automatisiert geht es nicht mehr!
-
bitte entschuldigt das doppelposting, aber das ist eine andere frage.
warum muss ich den array eine größe von mehr als 200 verpassen (200 geht nicht 2000 geht)string inhalt[2000];der rest ist wie oben.

-
Unabhängig von deiner Frage, empfehle ich dir
std::vector<std::string>;zu verwenden. Da ersparst du dir das rumgeteste wieviel Platz du brauchst, da machst du nur einstd::vector<std::string>.push_back();und der vector regelt das speichermanagment für dich.
-
Die
for-Schleife ist unnoetig, dafuer gibts jawhile...
Ausserdem oeffnest du die Datei bei jedem neuen Schleifendurchgang neu, vielleicht liegt auch hier der Fehler. Die Datei solltest du vor Schleifenbeginn oeffnen oder zumindest am Ende der Schleife einclose()undclear()hinzufuegen.
Einstd::vectorwuerde ausserdem vieles um einiges einfacher machen...
Ausserdem versteh ich nicht ganz was du vorhast... Wenn es dir nur um Zahlen (in Form von einer Zeichenkette) geht, dann gaebe es da eine einfache Loesung:ifstream inp("datei.txt"); if (!inp) return -1; std::string lines[26]; // Array, wenn du vector noch nicht kennst... size_t zaehler = 0; while (!inp.eof()) { getline(inp, lines[zaehler++]); }Gruss
Cartman
-
ok ... ich glaube ich hätte das vorher in einem Forum mal checken sollen.
(wenn man mal bedenkt das das ca. 20 zeilen kürzer ist
und der rest des programms möglicherweise auch verkompliziert ist)
ach und noch dazu wie ging das noch mit string --> Integer ?
Ich will jetzt nähmlich die zahlen (string) in einen integer packen.
an dem auslesen würde ich gerne (jetzt wo er endlich geht) nichts ändern.
nur den string zum integer würde ich gerne machen, zum beispiel:string strng; int integer; // und jetzt umwangeln und strng in integer packen, aber wie ?
-
std::stringstream s; std::string zahl = "2"; int z = 0; s << zahl; s >> z; std::cout << z;Im FAQ wäre das auch gestanden..
-
Meine Güte, Tim06TR, liest du eigentlich auch, was man dir antwortet? Schau mal hier, da wurden dir bereits Beispiele gebracht.

-
ja entschuldigung, da hab ich nicht dran gedacht.
