C++11 to_string not found



  • Oh mann, daraus werde ich nicht schlau 😞
    Ich kriegs einfach nicht zum Laufen. Wie bekomme ich das nur hin?


  • Mod

    DerCoder schrieb:

    Oh mann, daraus werde ich nicht schlau 😞
    Ich kriegs einfach nicht zum Laufen. Wie bekomme ich das nur hin?

    Code or it didn't happen.



  • #include <windows.h>
    #include <string>
    using namespace std;
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int) {
        int someRandomNumber = 100;
        string theNumberAsAString;
    
        theNumberAsAString = to_string(someRandomNumber);
        MessageBox(NULL, theNumberAsAString.c_str(), "", MB_OK);
    
        return 0;
    }
    

    error: 'to_string' was not declared in this scope|



  • DerCoder schrieb:

    #include <windows.h>
    #include <string>
    using namespace std;
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int) {
        int someRandomNumber = 100;
        string theNumberAsAString;
    
        theNumberAsAString = to_string(someRandomNumber);
        MessageBox(NULL, theNumberAsAString.c_str(), "", MB_OK);
    
        return 0;
    }
    

    error: 'to_string' was not declared in this scope|

    -c++0x bei Compiler-Optionen einschalten.
    EDIT: Hab das mit den Lambdas überlesen, wenn du es aber nicht aktiviert hast, dann tu das.



  • Ich kann ein Häkchen setzen. Tu ich dies, ändert sich nichts.
    Füge ich unter 'Other Options' die Zeile '-std=c++0x' hinzu und bestätige ich die Eingabe mit OK, ist beim erneuten Aufruf dieses Fensters die Zeile wieder gelöscht 😞



  • DerCoder schrieb:

    Ich kann ein Häkchen setzen. Tu ich dies, ändert sich nichts.
    Füge ich unter 'Other Options' die Zeile '-std=c++0x' hinzu und bestätige ich die Eingabe mit OK, ist beim erneuten Aufruf dieses Fensters die Zeile wieder gelöscht 😞

    Hab dein Problem, hat etwas mit Windows zu tun:

    http://stackoverflow.com/questions/8542221/stdstoi-doesnt-exist-in-g-4-6-1-on-mingw



  • Ist doch egal, programmier dir doch eben schnell ein to_int.
    Ich versteh sowieso nicht, warum im Standard plötzlich to_int drin ist. Ob ich mir nun selbst die paar Zeilen schreibe oder ne Lib dafür verwende. Statt solche Kinkerlitzchen einzuführen, könnten die mal endlich den Präprozessor wegmachen oder sowas.



  • Incocnito schrieb:

    Ist doch egal, programmier dir doch eben schnell ein to_int.
    Ich versteh sowieso nicht, warum im Standard plötzlich to_int drin ist. Ob ich mir nun selbst die paar Zeilen schreibe oder ne Lib dafür verwende. Statt solche Kinkerlitzchen einzuführen, könnten die mal endlich den Präprozessor wegmachen oder sowas.

    C++ ist mit C abwärtskompatibel,
    und den PP braucht man schon noch (includeS, includeguards, debugging...)



  • Wow Tatsache! Danke, wirklich!

    Wer macht denn soetwas? 😞 Das ist doch schon fast Windows-feindlich, sowas einzubauen...



  • std::thread fehlt dir übrigens auch -- das nur so am range ...



  • DerCoder schrieb:

    Wer macht denn soetwas? 😞 Das ist doch schon fast Windows-feindlich, sowas einzubauen...

    Höh? Ganz abgesehen davon, dass der GCC eigentlich gar keine Windows-Plattformen unterstützt, gibt es Makros der Form _GLIBCXX_HAVE_BROKEN_VSWPRINTF in der GCC-/libstdc++-Codebase für so einige Features, die auf der ein oder anderen Plattform eben defekt sind. Mit Windows speziell hat das nichts zu tun.

    In diesem Fall kam es dazu, weil sich wohl ein (Windows-)User über einen nicht funktionierenden Build beschwert hat. Schuld daran war anscheinend ein falscher, dem Standard widersprechender Prototyp vswprintfs in Microsofts C-Implementierung. Also hat man den GCC-Code, der ein korrektes Funktionieren der Funktion erwartet eben zur Configure-Zeit mithilfe des Makros deaktiviert.

    Kommt öfter mal vor, gerade für die Steinzeit-Unixe. Dass man für eine nicht unterstützte Plattform nicht groß auf Workaround-Suche geht, kann man den GCC-Leuten wohl kaum verübeln.


Anmelden zum Antworten