Debugfehler -Abort () wurde aufgerufen

9

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?

    
MNada 20.07.2014, 22:29
quelle

3 Antworten

4

Es gibt einige Probleme:

  1. Wenn Sie superLucky von main aufrufen, ist s leer. stoi(s) löst eine Ausnahme aus, wenn s leer ist.

  2. 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%     
R Sahu 20.07.2014, 22:47
quelle
0

Wahrscheinlich weil stoi() eine invalid_argument Ausnahme ausgelöst hat.

    
Yifu Wang 20.07.2014 22:33
quelle
0

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

aufruft     
Igor Tandetnik 20.07.2014 22:34
quelle

Tags und Links