2017-03-17 19 views
0

Der obige Code soll in eine Datei einlesen und die Nummern in den entsprechenden Ints speichern. Ich bekomme einen Fehler, der sagt "keine passende Funktion für den Aufruf von 'atoi'", obwohl ich #include < \ cstdlib> und #include < \ stdlib.h> in meinem Dateiheader. Unsicher, wohin von hier aus zu gehen. Habe etwas über stackoverflow und andere Foren recherchiert, konnte nichts finden, was mir wirklich geholfen hat. Irgendein Rat? Dankeatoi() funktioniert nicht wie erwartet

+1

Bitte ein [mcve]. –

+1

'c_str()' ist der Weg zu gehen. –

Antwort

0

Ausdruck gibt istream zurück, aber es gibt keine atoi Überladung, die einen solchen Parameter akzeptieren würde.

sollten Sie rufen atoi(temp.c_str());

1

Sie sollten stoi anstelle von atoi verwenden.

stoi dauert ein std::string als Parameter, während atoi als Parameter const char* dauert.

Und nicht vergessen ist neu seit C++ 11.

+0

Für meine Klasse ist es nicht empfehlenswert, C++ 11 zu verwenden, weil der hw-Submission-Server nicht vollständig kompatibel ist. Unabhängig davon, als ich stoi ausprobiert habe, gab es immer noch den Fehler "keine passende Funktion für den Aufruf von 'stoi'". Rufe ich die Funktion falsch an oder vergesse ich nur eine # include-Anweisung? –

+0

Es sollte nicht passieren, ich denke, wie wäre es mit mehr von Ihrem Code hier? @ ThunderBow98 – Jiahao

+0

Die Formatierung ist schrecklich für Kommentare, so überprüfen Sie einfach die OP, tut mir leid, und danke –

0

Sie haben versucht, einen Befehl zu überspringen und verloren. puzzle_file >> temp gibt puzzle_file und nicht temp zurück. Sie wenden also atoi auf einen Eingabestrom an, der in einen Bool konvertiert wird. Verwenden Sie:

int len, width; 
puzzle_file >> len >> width; 
if (! puzzle_file)... 
Verwandte Themen