Seite 1 von 1

Werte aus Datei auslesen

Verfasst: 24. August 2005 19:40
von kowi1134
Hallo!

Ich habe eine Datei, in der Werte wie die folgenden stehen können:

Code: Alles auswählen

416|490|269|215|446|98|65|221|429|748|159|194|197|217|331|
407|351|539|617|893|186|851|52|602|700|60|535|149|42|77|819|148|
568|88|53|704|877|118|925|306|556|83|
Das ist, was ich zur Programmlaufzeit von diesen Daten weiß:

- Anzahl der Daten
- Bereich der Daten (z.B. von 0 bis 1000)
- Datentyp (hier Integer)
- Nach wie vielen Daten ein Zeilenumbruch stattfindet
- Mit welchem Zeichen (\n oder \r\n) dieser Zeilenumbruch formuliert ist.
- Wodurch die Daten voneinander getrennt sind (hier durch eine pipe)

Meine Frage ist jetzt, wie ich diese Daten möglichst schnell (aber elegant) aus der Datei in ein Array lesen kann, welches nur die Zahlen speichert. Es kann davon ausgegangen werden, dass dieses Array bereits angelegt wurde. Ich dachte schon an RegularExpressions, allerdings weiß ich die hier nicht recht einzusetzen.

Ich hoffe, jemand kann mir hierbei helfen.

Ciao

Re: Werte aus Datei auslesen

Verfasst: 24. August 2005 20:09
von ArneStocker
kowi1134 hat geschrieben:Hallo!
Meine Frage ist jetzt, wie ich diese Daten möglichst schnell (aber elegant) aus der Datei in ein Array lesen kann, welches nur die Zahlen speichert.
Wie wär's wenn Du die Datei über QTextStream als String (im Beispiel inputzeile) einliest und anschliessend
mit QStringList::split() auf eine Stringliste verteilst.

Code: Alles auswählen

typedef QValueList<int> IntegerList;
IntegerList intListe;
QStringList zahlenListe;

zahlenListe = QStringList::split("I",inputzeile);
for (int i = 0; i < zahlenListe.count();i++) {
    intListe.append(QString::number(zahlenListe[i]));
}
anschliessend könntest Du die einzelnen Listeneinträge der StringList in eine IntegerList oder ein IntegerArray verteilen. Bei mehreren Zeilen könntest Du den Vorgang wiederholen (und an die IntegerList anhängen). Ob's die eleganteste Lösung ist, weiss ich nicht, aber der Programmieraufwand hält sich sehr in Grenzen

Gruss Arne

Verfasst: 25. August 2005 13:23
von kowi1134
Vielen Dank Arne!

Ich versuche es jetzt mal zu implementieren und poste dann hier meine Ergebnisse! Dein Vorschlag ist gut und so hätte ich es vermutlich auch in einer mir vertrauteren Sprache wie PHP gemacht, aber was Qt/C++ angeht, hab' ich diese Tricks nocht nicht so drauf.

Ciao