Zahlen aus txt Datei

Alles rund um die Programmierung mit Qt
Antworten
Stash
Beiträge: 29
Registriert: 9. Mai 2007 16:33

Zahlen aus txt Datei

Beitrag von Stash »

Hallo,

bin noch ziemlich neu was qt programmieren angeht und hab auch nach der suche hier im forum nicht direkt was gefunden was mir weiterhilft.

ich hab eine textdatei mit ungefähr folgendem aufbau:

5555 3344
2234 3421
ssss asdf
3344 455


ich will erreichen, dass nur die zahlen eingelesen werden (und wenns geht in nem array abgespeichert werden).
mein problem is nur, dass ich den ganzen mist nur in nem string über qtextstream speichern kann und dann in nem textbrowser ausgebe.
und die konvertierung in int --> keine ahnung.

aber vielleicht gehts auch leichter.

wär schön wenn ihr mir helfen könntet.

merci

mfg stash
Volker
Beiträge: 343
Registriert: 30. Juni 2005 05:27

Beitrag von Volker »

Also wenn deine Datei nur Zahlen die durch Leerzeichen getrennt sind enthält, würd ich als simpelste Lösung vorschlagen, einfach den Textstream mit textStream.readAll() in ein QString einzulesen. Danach auf dem QString ein split(' ', QString::SkipEmptyParts) aufrufen und über die resultierende QStringList iterieren.
z.B. mit einer for Schleife kannst Du dann für jeden einzelnen QString in der Liste ein toInt(&ok); aufrufen wobei in der bool Variable im Anschluss drin steht, ob die Konvertierung in einen Integer geklappt hat oder nicht.

Andere Möglichkeit wäre den textStream über QRegExp auf Zahlen zu parsen.
Bitte seid so nett und ändert den Titel von Beiträgen die gelöst wurden, auf [gelöst] Beitragstitel
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Es stehen also immer 2 Zahlen bzw. Zeichen-Kombinationen in einer Zeile? Das in ein Array zu bekommen kriegst du denke ich selber hin.

Wegen dem toInt(): man kann auch einen Char und somit einen String erfolgreich nach int konvertieren. Wenn es definitiv IMMER so ist, dass entweder Zahlen oder Ziffern in der Zeile stehen, prüf doch das erste Zeichen deiner Zeile (myStr.at[0]), ob es eine Zahl ist (bool QChar::isNumber()).

Jetzt solltest du alles wissen, wie du dein Problem lösen kannst :)

Grüße
Franz
Stash
Beiträge: 29
Registriert: 9. Mai 2007 16:33

Beitrag von Stash »

merci,

hey cool n split. wusste gar nicht dass es sowas in qt gibt. damit müsst ich zurecht kommen. vielen dank für die antworten

mfg stash
Stash
Beiträge: 29
Registriert: 9. Mai 2007 16:33

Beitrag von Stash »

hallo,

hab nochmal ne andere frage. ich wollt mal nachschauen was mein programm beim einlesen jetzt genau anstellt. nur mit dem debugger erkenn ich halt überhaupt keine struktur. die variablen zeigen immer nur komische werte mit denen ich nichts anfangen kann. so hab ich überhaupt kein peil,wie und wann der jetzt meine zahlen einliest.

gibts da irgendeine methode oder muss ich mich damit abfinden.

(benutze qt4 mit visual studio2005)

merci

mfg stash
Volker
Beiträge: 343
Registriert: 30. Juni 2005 05:27

Beitrag von Volker »

Stellt sich die Frage, was du denn als Debug Ausgabe ausgeben lässt.
Einfach einen QString ausgeben geht in der Regel schief. Statt dessen solltest du vorher auf dem QString .toLatin1().constData() aufrufen.
Oder qPrintable benutzen.
Bitte seid so nett und ändert den Titel von Beiträgen die gelöst wurden, auf [gelöst] Beitragstitel
Stash
Beiträge: 29
Registriert: 9. Mai 2007 16:33

Beitrag von Stash »

hallo nochmal,

ich weiß ich bin ziemich aufdringlich :)
aber irgendwie hab ich versucht die methode von volker (danke nochmal) anzuwenden. aber wenn ich über textstream einlese hab ich doch auch nur den textstream zur verfügung. wenn ich dann einen split ansetze, gibt er logischerweise den fehler aus, dass dieser befehl für qtextstream nicht verfügbar ist.

was soll ich machen?

mfg stash
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Schon mal versucht in einen QString 'reinzustreamen'?
Volker
Beiträge: 343
Registriert: 30. Juni 2005 05:27

Beitrag von Volker »

Ich hatte auch etwas von einem "readAll" geschrieben! Du solltest schon die Antworten richtig lesen bevor du gleich eine neue Frage stellst.
Bitte seid so nett und ändert den Titel von Beiträgen die gelöst wurden, auf [gelöst] Beitragstitel
Antworten