Stringstream



  • Hallo,
    ich habe ein Nachrichtensystem das bestimmte Meldungen, die jedes Mal kommen sollen in einem Vector speichert.
    Wenn nun eine neue Ausgabe angestoßen wird, werden die wichtigen Nachrichten aus dem Vektor immer angehängt.

    Also will ich den Vektor in einer Schleife durchlaufen.
    Ich könnte ihn immer an meinen String hängen.

    CString output;
    
    for(std::vector<CString>::const_iterator iter = messages.begin(); iter != messages.end(); ++iter)
    {
    	output += (*iter);
    }
    

    Aber wenn es wie in Java ist, dass bei jeder +-Operation ein neuer String angelegt wird, ist dies ja ineffizient. Also habe ich nach Stringbuilder gegoogelt und bin auf stringstream gekommen.

    Deshalb bin ich auf folgendes gekommen:

    CString output;
    std::stringstream outputTemp(std::stringstream::in | std::stringstream::out);
    
    for(std::vector<CString>::const_iterator iter = messages.begin(); iter != messages.end(); ++iter)
    {
    	outputTemp << (*iter);
    }
    
    outputTemp >> output;
    

    Nun mäckert er aber, dass er bei dem rechtsseitigen Operator keinen Operator mit CString hat. Ich arbeite hier aber mit CString, da das mfc-Objekt damit auch arbeitet.
    Wie ich dies sinnvoll nun für meine Zwecke einsetzen kann, habe ich leider nicht gefunden.

    Kann wer helfen?

    Danke



  • ich denke mal cstring ist im prinzip nichts anderes als ein char*, bzw hat einen construktor der einen char* erwartet
    dann kannst du folgendens machen

    stringstream ss;
    ss << /*alles reinpushen*/
    
    const char * str = ss.str().c_str();
    CString output(str);
    

    oder halt ohne umweg über den str...



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x) in das Forum MFC (Visual C++) verschoben.

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

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten