Werte aus Datei auslesen

Alles rund um die Programmierung mit Qt
Antworten
kowi1134
Beiträge: 120
Registriert: 1. Mai 2005 17:48
Wohnort: Arnsberg

Werte aus Datei auslesen

Beitrag 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
ArneStocker
Beiträge: 300
Registriert: 3. November 2004 16:15
Wohnort: Berlin

Re: Werte aus Datei auslesen

Beitrag 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
kowi1134
Beiträge: 120
Registriert: 1. Mai 2005 17:48
Wohnort: Arnsberg

Beitrag 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
Antworten