Frage

    

Diese Frage bereits eine Antwort hier:

    
            
  •              Wie löschen Sie eine string Variable?                                      8 Antworten                          
  •     
    
stringstream parser;

parser << 5;
short top = 0;
parser >> top;
parser.str(""); //HERE I'M RESETTING parser

parser << 6; //DOESN'T PUT 6 INTO parser
short bottom = 0;
parser >> bottom;

Warum funktioniert es nicht?

War es hilfreich?

Lösung

Normalerweise auf ‚Reset‘ ein string Sie beide müssen die zugrunde liegende Sequenz auf eine leere Zeichenfolge mit str zurückgesetzt und alle fehlschlagen und EOF-Flags mit clear zu löschen.

parser.str( std::string() );
parser.clear();

Normalerweise, was passiert, ist, dass die erste >> das Ende des Strings erreicht und setzt die EOF-Bit, obwohl es erfolgreich die ersten kurzen analysiert. Operationen auf dem Strom danach sofort fehlschlagen, weil die EOF-Bit-Stream noch gesetzt ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top