Inhalt einer Variable in string übergeben



  • Hallo,
    die Aufgabe ist es, eine komplexe Zahl anschaulich in einem string darzustellen.
    So soll die Ausgabe aussehen: z. B. 5+6i

    KomplexeZahl KomplexeZahl::addiere(KomplexeZahl Zahl_2)
    {
        double new_real=real+Zahl_2.real;
        double new_imag=imag+Zahl_2.imag;
    }
    

    Das ist gerade mal eine Methode für die Addition zweier komplexen Zahlen. Jetzt will ich den Ihnhalt von "new_real" und "new_imag" in einem string einbauen um obige Darstellung zu realieren.

    Habe leider keine ahnung wie ich das angehen soll. 😕 Googlen und Suche im Forum hat mich auch nicht weiter gebracht.

    Schonmal danke im voraus.



  • Schau dir mal std::stringstream an. Damit kannst du deine Zahlen wie bei cout formatieren und als String geben lassen.


  • Mod

    std::stringstream stream;
    stream << complex_number;
    std::string string = serializer.str();
    

    Wobei dir hoffentlich klar ist, dass dies speziell die Antwort auf die Frage ist, die du gestellt hast. Die Antwort auf das, was du wahrscheinlich hättest fragen sollen, ist:

    std::cout << complex_number;
    


  • Recherchiere mal nach "std::setprecision".



  • sebi707 schrieb:

    Schau dir mal std::stringstream an. Damit kannst du deine Zahlen wie bei cout formatieren und als String geben lassen.

    Im netz habe ich mir das angeguckt. Wenn ich den Code dann schreibe wie ich es verstaden habe, bekomme ich nicht das erwartete Ergebnis.

    Kann mir vielleicht jemand mal ein einfachen Beispielcode schreiben damit ich weis wie das mit der Syntax funktioniert?

    z. B.:

    int a = 30
    

    der Inhalt von a soll in einen string umgewandelt und dann mit cout ausgegeben
    werden.

    Danke



  • Also mal etwas genauer!

    Zu sebi707 und SeppJs Hinweis: Der geht (so wie ich das verstanden habe) in die Richtung, dass Du eine Zahl (z.B. double) in einen std::stringstream streamen kannst. Den std::stringstream kannst Du wiederum einem std::string zuweisen. Den kannst Du dann auch ausgeben über std::cout.

    Zu meinem Hinweis: Du kannst über std::setprecision z.B. Zahl wie z.B. double formatiert ausgeben. Ggf. wäre std::fixed und std::scientific noch interessant für das Thema.

    BTW: Streams verhalten sich sehr ähnlich. Wenn Du dir http://www.cplusplus.com/reference/iomanip/setprecision/ ansiehst, kannst Du davon ausgehen, dass Du nicht nur in std::cout, sondern auch in einen std::stringstream "streamen" kannst ( z.B.: …

    << std::setiosflags(std::ios::fixed) << std::setprecision( gewünschte Nachkommastellen ) << DeinDoublewert
    

    … )



  • #include <iostream>
    #include <string>
    #include <sstream>
    
    struct gadget{
      int value;
    };
    
    std::string to_string(const gadget& g) {
      std::ostringstream out;
      out << g.value;
      return out.str();
    }
    
    int main(){
      const gadget g{31415};
      auto s = to_string(g);
      std::cout << s << std::endl;
    }
    

  • Mod

    TiGei schrieb:

    der Inhalt von a soll in einen string umgewandelt und dann mit cout ausgegeben
    werden.

    Also trifft folgendes voll zu:

    SeppJ schrieb:

    Wobei dir hoffentlich klar ist, dass dies speziell die Antwort auf die Frage ist, die du gestellt hast. Die Antwort auf das, was du wahrscheinlich hättest fragen sollen, ist:

    std::cout << complex_number;
    

    Oder mal in Worten gesagt: Wozu der Umweg über den String?


Anmelden zum Antworten