string und integer verbinden?



  • ich habe eine function:
    drawstring(5, 2, "Level: "+level);
    level ist in diesem fall ein int
    und ich will wie man sehen kann eine ausgabe wie z.B. "Level: 5" haben
    wie schaff ich das? danke!



  • du wirst nicht drum herum kommen, aus der zahl einen string zu machen.



  • wenn ich n string erstellen will
    bekomme ich:

    :\tut\ch6\gp\main.cpp(272) : error C2065: 'string' : nichtdeklarierter Bezeichner
    D:\tut\ch6\gp\main.cpp(272) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'levelStr'
    D:\tut\ch6\gp\main.cpp(272) : error C2065: 'levelStr' : nichtdeklarierter Bezeichner
    D:\tut\ch6\gp\main.cpp(273) : error C2228: Der linke Teil von '.str' muss eine Klasse/Struktur/Union sein
    

    also include ich

    #include <string.h>
    using namespace std;
    

    dann krieg ich auchnoch

    D:\tut\ch6\gp\main.cpp(9) : error C2871: 'std' : Existiert nicht oder ist kein Namespace
    

    meine includes sehen so aus:

    #include <stdlib.h>
    #include <string.h>
    #include <math.h>
    #include "SDL.h"
    #include <cstdlib>
    #include <ctime>; 
    #include "SDL.h"
    #include <string.h>
    

    was mussich machen damit das klappt? danke!



  • ups da war was doppelt ^^



  • statt x.h nimm cx:

    #include <cstdlib> //statt stdlib.h
    #include <cstring> //statt string.h
    #include <cmath> //statt math.h
    #include "SDL.h"
    #include <ctime> //statt time.h
    using namespace std;
    

    mit string.h ist das so:
    die "alten" string funktionen, also die, die auf c-strings arbeiten (strcmp, strlen, ...) sind(waren) in string.h. aus string.h wurde cstring.
    die header der c++ standardbibliothek haben kein .h und kein c vorne.

    #include <string>
    using namespace std;
    

    bevor du mit der sdl weitermachst, schau dir noch an, was namespaces sind, damit du die zeile using namespace std; verstehst.



  • danke, habs jetzt auch hingekriegt, eine frage noch, string -> char umwandeln? danke 😉



  • Hallo,

    String.h ist definitiv der falsche, dabei handelt es sich um den C Header. Irgendwie scheint bei dir vieles durcheinander. Welchen Kompiler benutzt du? Hast du evtl. mal etwas ausführlicheren Code?



  • Die Memberfunktion c_str() von string erledigt das.



  • #include <sstream>
    #include <string>
    
    // ...
    
    std::string level_trunk = "Level: ";
    int level = 5;
    std::stringstream sstr;
    std::string level_string;
    
    sstr << level_trunk << level;
    level_string = sstr.str(); // jetzt ist level_string == "Level: 5"
    

Anmelden zum Antworten