Ich versuche, die n
th Ziffer einer Ganzzahl einer beliebigen Länge zu finden. Ich wollte die ganze Zahl in einen String konvertieren und das Zeichen am Index n ... verwenden
char Digit = itoa(Number).at(n);
... Aber dann habe ich festgestellt, dass die itoa
-Funktion nicht Standard ist. Gibt es einen anderen Weg, dies zu tun?
(number/intPower(10, n))%10
Definieren Sie einfach die Funktion intPower
.
Sie können auch den Operator% und / für eine ganze Zahl in einer Schleife verwenden. (Integer n & gt; = 0, n% 10 gibt die Einheitsziffer an und n / 10 löscht die Einheitsziffer.)
Sie können ostringstream verwenden, um in eine Textzeichenfolge zu konvertieren, aber eine Funktion in Übereinstimmung mit:
%Vor%sollte den Trick mit viel weniger Komplikationen machen. (Zum Anfangs behandelt es den Fall, in dem n größer als die Zahl ist von Ziffern richtig.)
- James Kanze
Itoa ist in stdlib.h.
Sie können auch ein alternatives itoa verwenden:
Alternative zu itoa () zum Konvertieren von Ganzzahl in Zeichenfolge C ++?
oder
ANSI C, Ganzzahl zu Zeichenkette ohne variadische Funktionen
Es ist auch möglich, die Umwandlung in einen String mit der Funktion log10 , int cmath zu vermeiden, die den 10.-Basen-Logarithmus einer Zahl zurückgibt (ungefähr ihre Länge) Wenn es eine Zeichenfolge wäre):
%Vor%Ich habe es getestet und funktioniert sehr gut (negative Zahlen sind ein Sonderfall). Es muss auch berücksichtigt werden, dass, um das n-te Element zu finden, in der Schleife rückwärts gewandert werden muss, wobei von der gesamten int Länge subtrahiert wird.
Hoffe, das hilft.
Ein allgemeinerer Ansatz:
%Vor%Sie können das gleiche für verschiedene Basisnummern (z. B. 16, 32, 64 usw.) tun.