Hallo zusammen Ich habe folgendes Problem. Ich möchte ein Zahl mittels einer textBox einlesen. z.B. die 623 und diese dann so trennen, dass ich sie in diesem beispiel in 3 Fenstern ausgeben kann also z.B. label1= 3 label2= 2 label3=6 Ich mach irgend was mit den string konvertierung at() kann mir jemand erklären wie ich diesen korrekt anwende oder ob das Problem auf eine andere Art gelösst werden kann?? Gruss Stefan
Und du bist dir sicher, dass du die Windows Forms mit C++ benutzt und nicht mit C#?
Ja wiso? C# werd ich mir dan später mal noch anschauen.. Ich programmiere in Microsoft Visual C++ und erstelle dabei eine Forms Anwendung mit welcher quasi drei "Displays" ansteuere, auf jedem Display kann nur eine Zahl ausgegeben werden, daher muss ich das ganze trennen... Wie das ganze mit dem Ausgeben funktioniert und wie ich die zahlen umwandeln muss damit sie korrekt ausgegeben werden weiss ich nur schaffe ich es nicht die zahl in einzelzahlen zu trennen um sie dann weiter zu verarbeiten. Gruss
Hi, wenn du einen string als ausgangsbasis hast solltest es doch kein problem sein die ZEICHEN zu trennen oder?
Sollte, nach meinen Forschungen sollte dass Ganze mit der String- Methode at() funktionieren, aber ich bin irgendwie zu dumm diese korrekt anzuwenden. Hasst du ein Beispiel wie man es anwendet?
Du kannst mit "richtigem" C++ keine WindowsForms benutzen. Du hast wahrscheinlich Visual Studio Express, das kann C++/CLI. Das ist ein zwischending von C++ und C# Deine Textbox liefert dir einen System.String. Du kannst dir die Zeichenkette mit ToCharArray() in ein Array vom Typ System.char wandeln lassen und kannst dann auf die einzelnen Elemente zugreifen. Dieses Zeichen kannst du dann deiner neuen Textbox zuweisen.
es steht auf jedenfall überall Visual C++, kenne mich eben nicht so aus mit diesen Sprachen, aber in der Schule muss mann anwenden was einem vorgegeben wird.. auch wenns in andern sprachen einfacher wäre.. Oke danke und wie wende ich das ganze an? z.B. n = Convert:: ToCharArray(textBox1->Text); ?? und dann?? Gruss
Stefan Graf schrieb: > Oke danke und wie wende ich das ganze an? > n = Convert:: ToCharArray(textBox1->Text); was ist textBox1->Text für ein Datentype? Dann schaust du dort in der Hilfe nach welche Methode er enbietet.
Wenn ich noch was einwenden darf: Die Zerlegung, indem man auf die einzelnen Buchstaben eines Textes zugreift, kann unter Umständen schon etwas Magenschmerzen bereiten, wenn man bedenkt, dass der Benutzer damit eine 3-stellige Zahl eingeben muss. Einfacher wird es unter Umständen, wenn man den Text in eine tatsächliche Zahl umwandeln lässt und diese dann nach dem Muster zerlegt: 386 / 10 -> 38 386 % 10 -> 6 also Division durch 10, bzw. Restbildung bei der Division.
Also wenn er die zahl dann wieder zur anzeige braucht wird sie ja wieder in einen Text gewandelt, ich würds speziell jetzt so machen:
1 | int laenge = label.Text.Length |
2 | |
3 | for(int i = 1; i<=laenge;i++) |
4 | { |
5 | char c = label.Text[laenge-i]; |
6 | switch(i) |
7 | { |
8 | case 1: Anzeige1.Text = n; break; |
9 | case 2: ... |
10 | } |
11 | } |
Aber nur im speziellen fall Ansonsten kann man das auch mit ner liste von integer machen kann man immer mal wieder brauchen
Angenommen du hast einen String
1 | string myString("123"); |
dann könntest du auf die einzelnen Positionen wie folgt zugreifen:
1 | myString[0]; //0tes Element |
2 | myString.at(1); //1tes Element |
Wenn du von einer Zahl (integer) kommst:
1 | #include <iostream> |
2 | #include <stdlib.h> |
3 | |
4 | //(...)
|
5 | char buffer [10]; |
6 | size_t bufferSize = (sizeof(buffer) / sizeof(buffer[0])); |
7 | int radix = 10; |
8 | int input = 123; |
9 | |
10 | _itoa_s(input, buffer, bufferSize, radix); |
11 | |
12 | cout << buffer[0] << buffer[1] << buffer[2] << endl; |
@ Herr Buchegger diese Idee hatte ich auch schon, dachte nur, dass wenn ich dass ganze mehr als 3 stellen ausweite es irgendwann nicht mehr wirklich übersichtlich ist. Da ich das Ganze aber am schluss sowiso noch in zahlen umwandeln muss, da ich es umrechnen muss damit es korrekt ausgegeben wird (div. verdrathungs fehler der Hw bauers) wäre dies mal ein Lösungsansatz welchen ich wohl vorerst mal verfolgen werde. Danke @ sebastian auch mal auf diese wiese versuchen
phu jetzt hats mir die Hälfte gelöscht.. die Lösung von Sesk mit dem myStrin.at() ist eigentlich genau der Lösungsansatz, welchen ich verfolgt habe. schaffe es aber nicht das ganze korrekt in einer Forms anwendung einzubetten. Werds allerding mit deinem input nochmals versuchen, denn ich glaube das wäre wohl die sauberste Lösung. Danke & Gruss Stefan
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.