Text aus Textdatei speichern
-
Hallo!
Mittels folgender while-Schleife hole ich mir den Text aus einer Textdatei:
while(getline(textDatei,line)) { this->text += line.c_str(); //Nach Zeilenumbruch wird ein Leerzeichen hinzugefügt this->text.Append(_T(" ")); //Durch Hinzufügen des Leerzeichens muss Zeilenlänge um 1 erhöht werden zeilenAnzahl.push_back((const int)line.length()+1); //richEditText wird zur Ausgabe der CNC-Syntax im Richeditfenster von //CNC-ProgrammView benötigt richEditText += line.c_str(); richEditText += '\n'; ++lines; }Problematisch sind Textdateien ab 20,000 Zeilen. Das dauert dann schon sehr lange, bis der komplette Text gespeichert wird.
Meine Frage: Gibts eine schneller Möglichkeit, um Texte zu speichern?Mike
-
Ohne genaueres über die entsprechenden Objekte zu wissen ist hier guter Rat schwierig zu geben!
1. Ich vermute this->text ist ein CString? In diesem Fal solltest Du einfach dafür sorgen, dass der CString groß genug ist.
2. Warum musst Du die Zeilenlänge jeweils speichern?
3. Warum musst Du immer noch ein Leerzeichne anhängen?Ich würde die ganze Datei in einen großen Speicherblock einlesen und dan selbst die entsprechenden Ersetzungen in diesem Speicherblock machen.
Aber ohne zu wissen was Dein Code eigentlich soll ist das ganze ein Tappen im Dunkleln (trotz Kristallkugel auf dem Fenstersims)!
-
Tut mir leid, ich hätte mich klarer ausdrücken sollen.
1.: Du hast recht, text ist ein CString.
2. und 3.: Das ist prinzipiell total unwichtig, die Zeilenlänge brauch ich später
und das Leerzeichen füg ich hinzu damit ich später weiß, wo die nächste
Zeile in der Textdatei beginnt ( wär auch mit \n gegangen)Prinzipiell öffne ich die Textdatei, hol mir Zeile für Zeile den Text und speichere ihn in einen CString. Mich wundert nur, dass das bei 20,000 Zeilen bereits so langsam geht, da die while-Schleife soweit ich weiß sehr viel öfter in der Sekunde aufgerufen wird.
Kannst du mir bitte genauer erklären, wie du das mit dem Speicherblock realisieren würdest, Martin?