Ich habe eine große Zahl in einer Zeichenfolge gespeichert und versuche, eine einzelne Ziffer zu extrahieren. Aber was sind die Unterschiede zwischen diesen Anrufen?Was ist der Unterschied zwischen meinen atoi() - Rufen?
#include <iostream>
#include <string>
int main(){
std::string bigNumber = "93485720394857230";
char tmp = bigNumber.at(5);
int digit = atoi(&tmp);
int digit2 = atoi(&bigNumber.at(5))
int digit3 = atoi(&bigNumber.at(12));
std::cout << "digit: " << digit << std::endl;
std::cout << "digit2: " << digit2 << std::endl;
std::cout << "digit3: " << digit3 << std::endl;
}
Dies wird die folgende Ausgabe erzeugen.
Zahl: 7
digit2: 2147483647
digit3: 57230
Die erste ist das gewünschte Ergebnis. Der zweite scheint mir eine Zufallszahl zu sein, die ich in der Zeichenfolge nicht finden kann. Die dritte ist das Ende der Saite, aber nicht nur eine einzelne Ziffer, wie ich es erwartet hatte, sondern vom 12. bis zum Ende der Saite. Kann mir jemand die verschiedenen Ergebnisse erklären?
EDIT: Wäre das eine akzeptable Lösung?
char tmp[2] = {bigNumber.at(5), '\0'};
int digit = atoi(tmp);
std::cout << "digit: " << digit << std::endl;
Das scheint wie Hausaufgaben. – Eric
Nun, ich habe tatsächlich versucht, das Problem 8 des Euler-Projekts zu lösen. Ich bin schon für dieses Semester fertig :-) – Lucas