2013-11-22 16 views
17

ich habe:Cygwin g ++ std :: stoi „Fehler: 'stoi' ist kein Mitglied von‚std

-cygwin 1.7.25 unter Windows 7/32-Bit-

-g ++ --version - > g ++ (GCC) 4.8.2

-libstdC++ a -> gcc-g ++ - 4.8.2-1

versucht, eine C++ Hallo Welt zu machen.

#include <string> 

int main() 
{ 
    std::string s = "123"; 
    int i = std::stoi(s); 
} 

Compilierung gibt:

$ g++ -std=c++11 main.cpp 
main.cpp: In function ‘int main()’: 
main.cpp:6:10: error: ‘stoi’ is not a member of ‘std’ 
    int i = std::stoi(s); 

ich stundenlang gesucht, aber ich konnte immer noch keine Lösung finden. Was ist das Problem hier?

+1

Seltsam. Es sollte funktionieren ... Das scheint ein seltsamer Fehler zu sein. – Ali

Antwort

11

Das ist ein Fehler, möglicherweise ein unvollständiger Port von bibliothekarischem Code zu cygwin (es ist ein cplusplus11-Feature) - einige Sachen müssen doch geändert werden. Stellen Sie sicher, es zu melden.

Die Lösung ist einfach natürlich: #include <cstdlib> strtol(s.c_str(),0,10);

www.cplusplus.com/.../strtol

Eine ähnliche mingw Fehler auch here erwähnt wird

std::stoi doesn't exist in g++ 4.6.1 on MinGW

+1

haben auch dieses Problem mit der neuesten stabilen Version von Cygwin, aber mit to_string –

+0

cygwin v4.9.2 Windows 7/64 noch keine stoi, aber strtol macht den Job –

1

Der Compiler nicht ernst genommen wird. Unter Windows ist es am besten, Visual Studio zu verwenden, da es immer auf dem neuesten Stand gehalten wird. Der Fehler hier ist, dass die Makro-Defs von vornherein falsch sind. Das Problem beginnt mit iomanip.h und iosbase. Also müssten sie ihren gesamten Code ändern. Es gibt benutzerspezifische Patches dafür, aber ich würde ihnen überhaupt nicht vertrauen, da sie möglicherweise noch mehr Bugs enthalten als die Originalkopien. Aber es liegt an dir, ich bleibe bei Visual Studio Express Edition.

0

stoi funktioniert nur auf mingw64 für mich korrekt. Wenn Sie Codeblocks verwenden, vergessen Sie nicht zu überprüfen, ob Ihr Projekt-Compiler auf mingw64 eingestellt ist.

3

Ich habe das gleiche Problem gestern. "Fehler: 'stoi' ist kein Mitglied von 'std'."

Zuerst stellte ich sicher, dass C++ 11 aktiviert war. Dann habe ich den g ++ - Compiler auf die neueste Version aktualisiert. Danach ist dieser Fehler verschwunden.

+0

Getestet und arbeitet mit G ++ 4.9 auf Debian. Obwohl der Benutzer eine Windows-Lösung benötigt –

Verwandte Themen