Ich versuche, eine Zahl einzugeben, und n die kleinste Superglückszahl, die mehr als oder gleich n ist. Super-Glück: Es ist Dezimal-Darstellung enthält die gleiche Anzahl der Ziffern 4 und 7. Zum Beispiel sind die Zahlen 47, 7744, 474477 super glücklich und 4, 744, 467 sind nicht.
Hier ist mein Code
%Vor%Sobald ich eine ganze Zahl eingegeben habe, bekomme ich den Debug-Fehler R6010 - abort () wurde aufgerufen. Was das bedeutet? und wie kann ich das beheben?
Es gibt einige Probleme:
Wenn Sie superLucky
von main
aufrufen, ist s
leer. stoi(s)
löst eine Ausnahme aus, wenn s
leer ist.
Der Check s.size() > 10
ist nicht robust. Es ist plattformabhängig. Sie können einen try/catch
-Block verwenden, um damit umzugehen, anstatt eine Größe hart zu codieren.
Hier ist eine robustere Version der Funktion.
%Vor% Beim ersten Aufruf von superLucky
übergeben Sie eine leere Zeichenfolge an std::stoi
. Wenn die Konvertierung nicht möglich ist, löst stoi
eine Ausnahme aus. Diese Ausnahme wird nicht abgefangen, also wird uncaught_exception
aufgerufen, was wiederum abort