Umwandlung von Text in Zahlen

Alles rund um die Programmierung mit Qt
Antworten
eule3
Beiträge: 56
Registriert: 30. Juni 2005 23:13

Umwandlung von Text in Zahlen

Beitrag von eule3 »

Hallo

Ein Problem mit der Umwandlung von QStrings in Zahlen.
Die Funktion t.toInt(&ok,10) liefert den
TEXT 0 wenn t gleich der Ziffer Null ist.
Und irgendwie finde ich das nicht ganz richtig.


Hier der ganze Quelltext.
Die Schleife zerteilt einen QString (eingabe)
in einen Textanteil und einen Zahlenanteil.

Code: Alles auswählen

do
{
// Schleife
pos ++;
t= eingabe.mid(pos,1).ascii();
	if (t.toInt(&ok,10))
	{//t ist eine Zahl
	zahl.append(t);}
	else
	{//t ist ein Text
	text.append(t);	}
} while (!(pos==lang));
Vielen Dank im voraus

PS
Gibt es elegantere Methoden Text zu zerlegen?
Marco812
Beiträge: 139
Registriert: 22. November 2005 11:28

Beitrag von Marco812 »

Hallo,

z.B. so:

QString strZahl = "1";

// String -> Zahl
int intZahl = strZahl.toInt();

// Zahl -> String
strZahl = QString().setNum(intZahl);

Gruß

Marco812
Nassian
Beiträge: 126
Registriert: 20. Juni 2005 21:14

Beitrag von Nassian »

Oder (Zahl -> QString)

Code: Alles auswählen

QString strNumer = QString::number( iZahl );
So finde ich es halt schöner ;)


SG Alexander
eule3
Beiträge: 56
Registriert: 30. Juni 2005 23:13

Beitrag von eule3 »

Hallo und danke für die Antworten.
Das ist schon richtig, nur nuß ich ja vorher entscheiden
ob der QString überhaupt eine Zahl ist oder nicht.
Und hier liefert QString.toInt das falsche Ergebniss
wenn der QString 0 ist.
(Also die Ziffer Null, nicht NULL)


mfg
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Das hat schon alles seine Richtigkeit, der Fehler ist in deinem Code. Ob eine Konvertierung erfolgreich war, steht im ersten Parameter und nicht im Rückgabewert.
eule3
Beiträge: 56
Registriert: 30. Juni 2005 23:13

Beitrag von eule3 »

Hallo

Danke macman, was wäre ich ohne Dich.
Jetzt funktioniert es wie es soll.
Eigentlich wollte ich die Funktion isNumeric() von
QChar benutzen, aber ich habe nicht herausbekommen
wie man einen QString (der nur ein zeichen groß ist)
in ein QChar umwandelt. (und umgekehrt)
mfg
Shadow
Beiträge: 92
Registriert: 27. August 2005 18:15
Wohnort: Iserlohn
Kontaktdaten:

Beitrag von Shadow »

eule3 hat geschrieben:Hallo

Danke macman, was wäre ich ohne Dich.
Jetzt funktioniert es wie es soll.
Eigentlich wollte ich die Funktion isNumeric() von
QChar benutzen, aber ich habe nicht herausbekommen
wie man einen QString (der nur ein zeichen groß ist)
in ein QChar umwandelt. (und umgekehrt)
mfg
Alles zu unelegant. :wink:
Wie wäre es mit der Funktion "bool QString::contains ( const QRegExp & rx ) const" + der Regular Expression [0-9] bei der Abfrage? Da gehst du auf jeden Fall 100%ig sicher, das dein String wirklich eine reine Zahl ist.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

eule3 hat geschrieben:aber ich habe nicht herausbekommen
wie man einen QString (der nur ein zeichen groß ist)
in ein QChar umwandelt.
Ist die Doku wirklich so schwer zu lesen? Guck dir die Rückgabewerte der einzelnen Funktionen an und dann hast Du es doch.
const QChar at ( int i ) const
QChar * data ()
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Shadow hat geschrieben:Wie wäre es mit der Funktion "bool QString::contains ( const QRegExp & rx ) const" + der Regular Expression [0-9] bei der Abfrage?
Ich bin sicher es findet auch noch eine Möglichkeit, bei der man später gar nicht mehr versteht was man da gemacht hat :wink:
Antworten