Zahl zerlegen, aber wie?
-
mein Problem, für welches ich ein Lösung suche ist folgendes:
Ich habe ein Zahl welche in einem String steht also z.B.
int Zahl[0] = 654321;
nun möchte ich diese Zahl so zerlegen, das ich jede Stelle einzeln als Ergebnis bekomme, also z.B. Erg[0] = 6; Erg[1] = 5; Erg[3] = 4; usw.
wie kann ich sowas machen, bitte helft mir ich bin schon ganz verzweifelt.
-
Ungetestet:
#include <vector> #include <algorithm> std::vector<unsigned> split_number(unsigned num) { std::vector<unsigned> result; while (num) { result.push_back(num % 10); num /= 10; } std::reverse(result.begin(), result.end()); return result; }
-
@ operator void
vielen Dank, aber ohne Erklärung reicht dafür mein Wissen (oder besser Unwissen) leider nicht.
Könntest Du mir das bitte irgendwie erklären? Danke.
-
Aufgerufen wird das so:
std::vector<unsigned> ziffern = split_number(1337); // ziffern[0] == 1, ziffern[1] == 3, etc. - ziffern.size() ist die Länge der Zahl
Wie die Funktion intern funktioniert, kannst du ja in Gedanken simulieren. Sind alles Standard-Sprachmittel, die du notfalls nachgucken kannst. Wichtig ist dabei jedenfalls, dass /= Nachkommastellen abschneidet.
-
Vielen Dank!
-
Bambi schrieb:
Ich habe ein Zahl welche in einem String steht also z.B.
int Zahl[0] = 654321;
Ähh, die Zahl steht hier aber in einem Integer-Array
-
Man kann die Zahl auch mit itoa in einen Char-string umwandeln.
-
ja das hatte ich mir auch schon überlegt...
int Zahl = 654321; char buffer[10]; string str = itoa(Zahl, buffer, 10); cout << str[0] << "/" << str[1] << "/" << str[2] << "/" << str[3] << "/" << str[4] << "/" << str[5] << endl;
-
Und welche probleme gab es dabei?
-
keine
wollte nur noch auf ne Antwort warten...
-
itoa ist kein Standard-C++.