C++ - es ist (war) nicht deklariert ist, in diesem Umfang
Ich bin üben meine C++ - coding-einfache Eingabe - /Ausgabe-Nutzers. Ich habe nun schon die Suche über eine Stunde auf gewusst wie: konvertieren einer Zeichenfolge in einen int. Jede Antwort ist anders, und erfordern etwas anderes.
Ich bin mit Code::Blocks v. 13.12. MingW32-Ordner Hinzugefügt Umgebungsvariablen. Ich landete mit es ist meine konvertieren von string zu integer mit try/catch-block. Ich habe C++11-Unterstützung in Code::Blocks, indem Sie zu Settings -> Compiler
- und tick -Have g++ follow the C++11 ISO language standard [-std=c++11]
. Es kompiliert und läuft einwandfrei in CB, aber wenn ich versuche zu kompilieren manuell in der Kommandozeile bekomme ich diesen Fehler:
error: 'stoi' was not declared in this scope
. Die Linie bezieht sich auf: characters = stoi(input);
Diese sind die Befehle, die ich bisher ausprobiert habe:
g++ -std=c++11 main.cpp
& g++ -std=c++11 -c main.cpp -o main.o
& mingw32-g++ -std=c+11 -c main.cpp -o main.o
(was die CB ist mit nach der Ausgabe von log -)
Wenn Sie e besseres Beispiel als stoi()
bitte machen Sie es einfach, und fügen Sie vollen text von try/catch.
BEARBEITEN: Das steht ganz oben in meiner Datei:
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <string>
#include <algorithm>
#include <stdexcept>
using namespace std;
Fehlermeldung bezieht sich auf:
int player;
string input;
cin >> input;
player = stoi(input)
Mein Code::Blocks compiler gibt Folgendes log:
mingw32-g++.exe -std=c++11 -c "C:\Users\<name>\#C++\main.cpp" -o "C:\Users
<name>\#C++\main.o"
mingw32-g++.exe -o "C:\Users\<name>\#C++\main.exe" "C:\Users
<name>\#C++\main.o"
Process terminated with status 0 (0 minute(s), 0 second(s))
0 error(s), 0 warning(s) (0 minute(s), 0 second(s))
Source-code, wie verlangt: entfernt, da er nicht im Zusammenhang mit der Lösung.
- Hast du
#include <string>
? Hast du das Präfix mit dem richtigen Umfangstd::stoi
? - Ich habe eine Reihe von Bibliotheken, einschließlich der <string>. Ich bin auch mit
using namespace std;
. Es läuft wunderbar in Code::Blocks und alles funktioniert wie es sollte. Aber nicht durch Befehl Linie. - Bitte nicht veröffentlichen "Warum ist das nicht mein code arbeitet" Fragen, ohne SSCCE und alle notwendigen Informationen, um das problem zu reproduzieren.
- Tut mir Leid, nicht verwendet, um stackoverflow. Bearbeitet meine post.
- wenn der code nicht super lange (was ich vermute, es ist nicht), könnten Sie fügen Sie alle die Quelle?
- Source-code Hinzugefügt wird.
- Welche version von mingw32 verwenden Sie? Siehe diese Diskussion, stackoverflow.com/questions/14590410/stoi-and-stoll-in-c sowie einige Kommentare in dieser Diskussion stackoverflow.com/questions/29088327/... sowie die Diskussion in diesem forum gcc.gnu.org/bugzilla/show_bug.cgi?id=52015
- Habe ich eine bat-script von dieser Seite: forums.codeblocks.org/index.php?topic=9054.0 und es gab mir diese Ausgabe:
#define __MINGW32_VERSION 3.20
und#define __W32API_VERSION 3.17
. Überprüfen Sie Ihre links jetzt. - KORREKTUR: Mingw32-Pfad ->
C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\4.7.1
ich denke, es ist v4.7.1?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich es geschafft es zum laufen zu bringen! Ich habe die neueste release-Mingw32 (GCC 5.1.0 wie das geschrieben wird) aus: http://nuwen.net/mingw.html.
Änderte ich meine Umgebungsvariable
<your path>\MinGW\bin
und liefg++ -std=c++11 -static main.cpp -o test.exe
. Arbeitete wie ein Charme. Weiß noch nicht, wie C::B es tun könnte, während es hat nicht funktioniert über die Kommandozeile, obwohl Sie wies auf den gleichen Ordner.