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
Zahlen aus txt Datei
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.
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
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
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
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
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
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.
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
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
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