float variable an string anhängen



  • Hallo erstmal,

    ich bin so ziemlich neu bei c++, habe bis jetzt nur in java einwenig erfahrung. Ich hab da ein Problem, und zwar will ich eine float variable an einen string anhängen. mit der msdn library komm ich noch nicht so richtig zurecht. wie in java hatte ich das erstmal so probiert.

    int wert1 = 12;
    float wert2 = 4.50;
    
    string s1 = "Wert 1: " +wert1;
    string s2 = "Wert 2: " +wert2;
    
    cout << "String 1: " << s1 << endl;
    cout << "String 2: " << s2 << endl;
    

    Was genau, oder eher wie genau kann ich mehrere Strings aneinander hängen, und wie kann ich ne float variable dranhängen 😕

    MFG
    Jens



  • Hier geht's aber leider weder um Java, noch um C++; Du bist hier nämlich im Forum für C#. Sei nicht böse, wenn Dir keiner antwortet.



  • Oh son mist. Sorry. Aber vieleicht kommt ja dennoch was.



  • Nichts für ungut, aber absolut unnütze Threads gehören gelöscht bzw ins Archiv. Das ich diesen Thread bei Google nach über 11 Jahren ganz oben finde kostet nur Zeit und ist schlecht für eure Seite / dieses Forum. 🙂



  • dermixer schrieb:

    Ich hab da ein Problem, und zwar will ich eine float variable an einen string anhängen. mit der msdn library komm ich noch nicht so richtig zurecht. wie in java hatte ich das erstmal so probiert.

    Wenn du mit der MSDN Probleme hast, seien dir unter anderem die folgenden Seiten ans Herz gelegt:

    C++ arbeitet auf einen niedrigeren "Level" als Java oder C# (wenn gleich auch einem höheren als beispielsweise C). Man kann nicht einfach von Java auf C++ Rückschlüsse ziehen (umgekehrt ist es eher der Fall), und ich kann dir nur empfehlen ein C++ Buch für den Einstieg zu suchen (z.B. der C++ Primer [ohne Plus im Titel]). Bei C++ steht die Performance noch ziemlich stark im Vordergrund, eine Stringverkettung in der von dir gezeigten Art erzeugt aber lauter Kopien (Selbst unter Java und C# gibt es daher unter anderem auch die Streams).

    In C++ hast du mehrere Varianten:
    a) du verwendest die Streams, in deinem Beispiel hätte ich das ohnehin getan, wenn du den String nicht weiter verwendest. Neben cout und cin gibt es auch stringstream, der einen String effizent zusammenbauen und über die str-Methode ausgelesen werden kann.
    b) Du kannst dir eine Templatefunktion bauen die den Stream kapselt, oder hierfür auf boost zurückgreifen (z.B. lexical_cast).

    Ohne Überprüfung (und auch nicht sonderlich effizient):

    #include <iostream>
    #include <sstream>
    #include <string>
    
    template<typename T>
    std::string toString(T const & value)
    {
        std::stringstream stream;
        stream << value;
        return stream.str(); 
    }
    
    int main()
    {
        int wert1 = 12;
        float wert2 = 4.50;
    
        std::string s1 = "Wert 1: " + toString(wert1);
        std::string s2 = "Wert 2: " + toString(wert2);
        std::cout << "String 1: " << s1 << "\n";
        std::cout << "String 2: " << s2 << "\n";
    }
    

    Spätestens bei float-Werten wirst du aber sehr schnell dahinter kommen das die Umwandlung nicht unbedingt das Ergebnis liefert, das du gerne haben willst (Wie soll den das genaue Format aussehen?). Spätestens dann kommst du an einen Punkt wo eine Stringverkettung ohnehin nicht die beste Lösung ist (Eine Möglichkeit sind dann die Stream-Manipulatoren, wie hier zu sehen).



  • Juhu, der 11 Jahre alte Thread wird endlich beantwortet!


  • Administrator

    Und nach 11 Jahren kann er ins korrekte Forum verschoben werden! Unglaublich.

    VVombat schrieb:

    Nichts für ungut, aber absolut unnütze Threads gehören gelöscht bzw ins Archiv. Das ich diesen Thread bei Google nach über 11 Jahren ganz oben finde kostet nur Zeit und ist schlecht für eure Seite / dieses Forum. 🙂

    Freut mich, dass du dich als Freiwilliger meldest, um die über 2 Millionen Beiträge durchzugehen und diese jeweils einzusortieren 🤡



  • Dieser Thread wurde von Moderator/in Dravere aus dem Forum C# und .NET in das Forum C++ (auch C++0x und C++11) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • oenone schrieb:

    Juhu, der 11 Jahre alte Thread wird endlich beantwortet!

    nur daß es inzwischen std::to_string() gibt 😃



  • großbuchstaben schrieb:

    oenone schrieb:

    Juhu, der 11 Jahre alte Thread wird endlich beantwortet!

    nur daß es inzwischen std::to_string() gibt 😃

    Genau das war der Plan: Abzuwarten, bis es eine elegante Loesung gibt.


Anmelden zum Antworten