string.h



  • Hallo!

    Wenn ich mich nicht ganz irre, dann ist
    #include <string.h>

    ...
    string a="(";
    string b=")";
    string c="blabla";
    string d=a+b+c;
    ...
    

    doch nicht falsch, oder?

    Konnte nix in der Suchfunktion finden...

    Übrigens, gibt es eine vordefinierte Funktion um einen String, in dem eine Zahl steht in float umzuwandeln?
    Oder auch umgekehrt (float in string schreiben)
    EDIT: Sorry, hatte vergessen, dass es atof und strtod gibt...

    Danke schonmal für eure Hilfe



  • Es muss

    #include <string>
    std::string foo = "bar";
    

    heißen.

    Schau dir für die Umwandlungen mal stringstreams an.



  • ARGH!!!

    Ersteres Problem (Verwendung von <string.h> statt <string>) hatten wir jetzt an die 10-mal, eine Suche muss da doch was hervor gebracht haben. Letzteres ist der wohl am häufigsten verlinkte FAQ Artikel überhaupt (such selbst!). atof etc. ist Quatsch, wenn du std::string benutzt.



  • Hallo

    #include <string>
    ...
    std::string a="(";
    std::string b=")";
    std::string c="blabla";
    std::string d=a+b+c;
    

    ist richtig.

    Übrigens, gibt es eine vordefinierte Funktion um einen String, in dem eine Zahl steht in float umzuwandeln?
    Oder auch umgekehrt (float in string schreiben)

    Zum umwandeln nimmt man in C++ die stringstream-Klasse.

    /Edit : viel zu langsam

    bis bald
    akari



  • Doch, dein Beispiel ist falsch. Es gibt in C++ keinen <string.h> Header, du suchst nach <string>. Und dann wird dein Code immer noch nicht funktionieren, da sich alle Standardklassen im Namensraum std befinden. Dh, du musst die Bezeichner explizit qualifizieren. Also std:: davor schreiben. Oder du benutzt eine using Deklaration bzw eine using Direktive. Was das ist, erfährst du hier.

    Und das mit der Umwandlung findest du in den FAQ ➡ "Einmal Zahl nach String und zurück". Stichwort: Stringstreams



  • .filmor schrieb:

    ARGH!!!

    Tut mir ja leid. Ich weis, dass es <string> heißt, hab mich verschrieben. Nicht böse sein... 😞

    @quotemaster: Tut mir leid. Ich war ein bisschen schlampig beim Schreiben. Ich hab nütze natürlich den Namensraum std.



  • So, der Fehler ist mir jetzt bekannt.
    Ich hab durch eine #ifdef Anweisung string nicht eingebunden. Tut mir Leid. Ich weiß ich bin schlampig. 😞

    Ich schäme mich ja eh... 😞


Anmelden zum Antworten