String Zerlegen
-
In C kann ich ja etwas schon art "vorzerlegen" in den ich
int Var1;
char Var2;
cin >> Var1 << Var2 <<...
also z.B. aus 12-6... die integer rausziehen.aber wie zerlege ich jetzt in einer winapi den string aus meiner edit box so das mir nur noch die float o. int zahlen bleiben?
-
Wie sieht der string der im EditControl steht aus?
Hat dieser ein bestimmtes Format?
-
int<>int ( <> als zeichen bei der eingabe
)
bsp:
-100<>100u. float x + float x + float
bsp:
3.2x+4.5x-6
^^ ( gemeint ist das zerlegen eines AnsiStrings aus einem TEdit objekt, um mal etwas genauer zu werden )
-
also falls du weißt wie der string aussieht könntest du es mit sscanf machen.
int zahl1; int zahl2; sscanf (buffer,"%s<>%d",&zahl1,&zahl2);Davor natürlich buffer füllen.
Wenn du verschiedene mögliche Eingaben hast müsstest du erst entscheiden wie du den String aufteilst.
-
Hmm
C++: char-Array von GetWindowTextLength anlegen und mit GetWindowText den Text holen. Dann einen std::ostringstream mit den Daten befüllen, char-Array wieder freigeben. Jetzt kannst du mit dem operator>> usw. wie bei std::cin die Daten auswerten.
Oder du packst es in einen String und nimmst einfach find oder find_first_of usw ...
-
zu Knob,
würde er wenn ich %fx+%fx-%f schreibe auch noch die zahlen erknennen wenn ich schreibe 2x+3.2x+4
zu Evil,
Oo okay.. mein borland kennt nichtmal die klasse u. auch nicht die bibliothek die mir die msdn sagt.
-
du meinst wegen dem + in dem einen und dem minus in dem anderen... das würde er nicht erkennen...
Versuch es vielleicht so:
char buf1[10]; char buf2[10]; int zahl1; int zahl2; int zahl3; sscanf (buffer,"%fx%s%fx%s%f",&zahl1,&buf1,&zahl2,&buf2,&zahl3);ist zwar nicht elegant... sollte aber funktionieren. Habs allerdings nicht getestet.
-
Ehm wenn der das nicht kennt ... dann solltest du deinen Compiler in die Tonne klatschen
Das ist der C++-Standard ...#include <sstream> #include <windows.h> const std::size_t len(::GetWindowTextLength(hWnd) + 1); TCHAR* string = new TCHAR[len]; ::GetWindowText(hWnd, string, len); std::basic_istringstream<TCHAR> ss(string); delete [] string; // Jetzt stehen deine Daten in ss. Kannst du (fast) so nutzen wie std::cin :) double value1(0.0); ss >> value1;usw ...
-
nagut war nen bisschen schlecht formuliert, die dokumentation des borlands kennt die nicht.
aber danke danke danke
