*txt auslesen
-
Hi alle zusammen! ich will das mein programm eine Textdatei ausliest und in eine typedef map<string, struct> Tint_map einliest.
Ich habe das schon gemacht bloß das auslesen dauert mir zulange. über 1min dauert es!!!kann mir jemand sagen wie ich eine textdatei schneller auslesen kann!
danke im voraus
-
Oder kann mir jemand sagen wie ich meine mappe speichere und beim nächsten öffnen meines Programms die daten noch drin stehen
-
hat den niemand eine Anwort oder ist meine Frage zu ungenau
-
Hallo,
was denn nun? Mappe oder Textdatei? Was ist eine Mappe? Excel-Datei? CSV?
Wie groß ist die Datei? Also wieviel Zeilen?
Was soll Deine Map eigentlich sein? SIeht doch eher aus wie ein schlichtes Array.
GRuß
Ocrana
-
Wenn du ein CMap/CMap* nimmst dann kannst du via CMap::Serialize die Daten über ein CArchive laden/speichern.
Wieviel Daten sind das denn? Weil eine Minute ist doch recht lange...
-
es keine exelmappe oder andere mappe.
also in meinem programm ist eine Mappe (typedef map<string, struct> Tint_map; #include <map> ) deklariert mit der ich aus einer datei(ca. 3Kb groß/ca. 60t. einträge) daten auslese. Das zugreifen auf die daten in der mappe nach dem auslesen geht sehr schnell. Bloß das auslesen ist verdammt langsam. Und wenn ich direkt auf die Daten in der Datei suchen will dauert es zu lang
-
ich lese die daten mit dem operator >> aus vielleicht kann ich gleich die ganze datei in die mappe reinschreiben oder so was ähnliches
-
3kB? Das läuft was falsch. 3kB das ist in 10ms abgetan (wenn überhaupt)
Post mal deinen Einlese Code - da haste iw net so ganz richtig...
-
if (Sprache == ' ')
{
fehlerNachrichten('PE');
return false;
}SWort W;
if (kannInDateiOeffnen() == false)
{
return false;
}//SWort aus der English-German.txt Datei laden
if(Sprache == 'E')
{
// EMappe.erase(EMappe.begin(), EMappe.end());
ifstream inE("English-German.txt");
while(!inE.eof())
{
inE >> W.Wort;
inE >> W.Uebersetzung;
inE >> W.Ergaenzung;
inE >> W.Woerterbuch;
zeichenErsetzen(&W, 'o');
SetSprache('E');
SetWort(W);
W.leereSWort();
}
inE.close();
}//SWort aus der German-English.txt Datei laden
if(Sprache == 'D')
{
// DMappe.erase(DMappe.begin(), DMappe.end());
ifstream inD("German-English.txt");
while(!inD.eof())
{
inD >> W.Wort;
inD >> W.Uebersetzung;
inD >> W.Ergaenzung;
inD >> W.Woerterbuch;
zeichenErsetzen(&W, 'o');
SetSprache('D');
SetWort(W);
W.leereSWort();
}
inD.close();
}
return true;
-
Die
zeichenErsetzen(&W, 'o');
SetSprache('E');
SetWort(W);
W.leereSWort();Funktionen solltest vlt. mal überprüfen.
Setz mit F9 mal einen Breakpoint auf z.B. ifstream inE("English-German.txt");
Und geh mal mit F10/F11 durch was solange dauert. (Mit F11 springt man in die Funktion)Programm musst du mit F5 starten (Debug-Modus nicht Release)
-
Ich hab des schon probiert es dauert zwar nicht so lang aber sagen wir mal so es macht die größte Zeitspange von den allen aus! gibts da irgenwie einfach meine map in die datei gleich mit einem stoß reinschreibe und auslese. Ein Zeiger oder sowas ähnliches.