to_string is not a member of std ?

T_55

Lieutenant
Registriert
Feb. 2013
Beiträge
643
Hallo,

wie der Titel schon zeigt habe ich beim Compilieren eine Fehlermeldung to_string is not a member of std
Ich will eigentlich "nur" Zahlen zu Text wandeln aber dies scheint schwerer zu sein als gedacht...

std::string s = std::to_string(555);

Sprache: C++
IDE: Code::Blocks
Compiler: nennt sich in Code::Blocks "GNU GCC Compiler" ist aber MinGW also "mingw32-g++.exe"
In der Readme steht: GCC 4.7 & 4.8 Series, Standard MinGW 32-bit Edition.

Hat jemand eine Idee wo das Problem liegt?

Gruß
 
oder hier: http://stackoverflow.com/questions/12975341/to-string-is-not-a-member-of-std-says-so-g

erste Antwort:
This is a known bug under MinGW. Relevant Bugzilla. In the comments section you can get a patch to make it work with MinGW.

This issue has been fixed in MinGW-w64 distros higher than GCC 4.8.0 provided by the MinGW-w64 project. Despite the name, the project provides toolchains for 32-bit along with 64-bit. The Nuwen MinGW distro also solves this issue.
 
Ansonsten ist auch anzumerken, dass MinGW generell eher ein Krampf ist. Wie die meisten Entwicklungstools unter Windows, die ihre Ursprünge in der Linux-Welt haben.

Mit Visual Studio andererseits verliert man meiner Erfahrung leicht den Überblick, was in der Build-Kette eigentlich vor sich geht..
 
Zuletzt bearbeitet:
Ok danke, interessant das es am Compiler liegt. Was haltet ihr von LLVM Clang Compiler als Alternative?
 
Unter linux oder in VS2015 ist clang++ spitze, mit Codeblocks unter windows hab ichs noch nicht ausprobiert (ich wusste noch nichtmal, dass das geht). Die Frage ist aber ohnehin immer, welche Versionen du miteinander vergleichst gcc 4.8 ist jetzt halt auch schon nichtmehr taufrisch.
 
Ich muss gestehen beim aktuellen Code::Blocks war das mit dabei und ich habe es bis heute ohne zu hinterfragen genutzt.
Wenn man schaut gibt es dann bei GCC wieder 3 Unterschiedliche: Cygwin, MinGW, Mingw-w64. Ich kann das als Hobbynutzer nicht beurteilen was von den ganzen das beste/aktuellste ist. Werde einfach Clang mal versuchen wenn das so gut ist.
 
Als kurze Erklärung:
Es gibt die gcc compiler suite (aktuelle Version ist glaube ich 5.3) ,die aber erstmal nur auf Linux läuft. Mingw und Mingw64 sind (vereinfacht gesagt) Portierungen für Windows, die aber natürlich immer etwas hinterher hinken (mingw im Besonderen scheint inziwschen tot zu sein - die letzte Änderung gabs da wohl ende 2013). Cygwin simuliert eine (fast) komplette POSIX Umgebung auf Windows in der dann mehr oder weniger der originale gcc (und damit auch eher der neueste) oder auch clang läuft. Ob es von clang eine ähnliche Portierung wie mingw gibt, die ohne Visual studio funktioniert weiß ich nicht.

Was ich definitiv aus eigener Erfahrung sagen kann ist, dass die Fehler und Warungen von clang3.5 wesentlich besser verständlich sind als die von gcc4.8. Bei neueren Version ist der Unterschied (in dieser Hinsicht) aber nichtmehr so drastisch.
 
Super danke für die Erklärung. Habe Clang ausprobiert aber es gibt Fehler denn scheinbar fehlt bei Clang die komplette C++ Standard Library, weiss jemand wie man da abhilfe schafft? Bin schon hier http://libcxx.llvm.org gelandet aber da blicke ich nicht durch...
 
clang braucht nicht zwingend libc++ (zumal die AFAIK auch nach wie vor nicht vollständig ist). Der funktioniert auch mit der "normalen" libstdc++ - wie man den Compiler jetzt aber dazu bringt, diese zu finden, da bin ich überfragt.
 
Wie genau hast du enn Clang jetzt installiert? Wie schon gesagt zielt die übliche "native" Windows Variante auf kompatibbilität mit VC++ und dessen Standardbibliothek ab, also müsstest du vermutlich erstmal Visual studio installieren. Bei der Cygwin Variante musst du vermutlich so wie bei Linux auch das g++ package mit der listdc++ installieren.

Die libc++ wird meines 'Wissens auf Windows nicht unterstützt
 
Habe Clang mit dem normalen setup installiert, dann Code::Blocks auf das Verzeichnis umgestellt, per Autodetect wurde alle Program Files simple zugewiesen. Das hat alles Prima funktioniert. Das Problem ist eben nur, dass ein normales Hello World nicht mal geht weil iostream nicht gefunden wird.
Bei MinGW läuft iostream Problemlos.
 
Wenn du eine mingw Toolchain verwenden willst, würde ich unbedingt MSYS2 Empfehlen.
http://sourceforge.net/p/msys2/wiki/MSYS2 installation/
Da ist pacman mit dabei, über den man alle Tools super aktuell halten kann. Gibt sehr viele Unix-bekannte Tools für Windows und vor allem aktuelle (gcc 5.3.0).
Einfach die mitgelieferte shell starten und mit "pacman -S mingw-w64-x86_64-toolchain" hat man so ziemlich alles was eine IDE will ;)
 
Zurück
Oben