stringstream komplett ausgeben mit >>



  • Hey Leute,

    sagt mal gibts einen Manipulator oder irgendeinen Weg
    einen Stringstream auf einmal komplett auszugeben?
    Etwa so:

    std::stringstream ss;
    std::string s;
    ss << "hallo welt";
    ss >> giballes >> s;
    

    ich weiß dass ich ihn so komplett ausgeben kann mit ss.str(), ich brauche es aber mit dem Operator>>!

    Vielen Dank falls jemand etwas weiß!


  • Mod

    Operator >> ist eigentlich für formatiertes auslesen gedacht, das heißt, es werden nicht die Rohdaten blind ausgegeben sondern 'intelligent' verarbeitet. Das widerspricht eigentlich dem, was du willst. Ein Blick in die Referenz zeigt aber, dass operator >> auch für die Klassen streambuf, istream, ios und ios_base überladen ist. Ich vermute mal, dass da der gesamt Inhalt ausgegeben wird.

    Und jetzt die obligatorische Frage: Wieso diese Selbsteinschränkung?



  • wozu brauchst du es?



  • ich habe ne parse funktion, selbsterklärend:

    std::stringstream ss;
     switch( ref.type ) {
     case tt_pureint:
      ss << bwDezStrToInt( ref.value );				
      break;
     case tt_hexint:
      ss << bwHexStrToInt( ref.value );				
      break;
     case tt_binint:
      ss << bwBinStrToInt( ref.value );				
      break;
     case tt_pureintfloat:
      ss << bwFloatStrToFloat( ref.value );				
      break;
     case tt_true:
      ss << true;				
      break;
     case tt_false:
      ss << false;				
      break;
     case tt_null:	
     case tt_word:
      ss << ref.value;				
      break;
     case tt_string:	
      ss << ref.value;				
      break;						
    }				
    ss >> std::noskipws >> value;
    

    wenn jetzt aber ein tt_string reinkommt, zb ("hello world")
    dann bekommt value nur "hello" und deshalb um nicht unter jede Bedingung
    mein stream seperat füllen zu müssen, wollte ich es am ende einheitlich komplett einfach machen. aber werde es jetzt individuell unter jeder Bedingung machen..

    danke!!


Anmelden zum Antworten