2011-01-10 4 views
0

Ich habe einige Verständnisprobleme in Bezug auf die stringstream.stringstream.good()> Unterschiedliches Verhalten in VS und Eclipse Compiler

Beispiel:

stringstream stream(commands); 

    while (true) { 
     string line; 
     getline(stream, line); 

     if (!stream.good()) 
      break; 
     if (line.size() > 0){ 
      lines.push_back(line); 
     } 
     else{ 
      break; 
     } 
    } 

Wenn ich diesen Code verwenden in Eclipse ist es kein Problem, es wie erwartet. Mit diesem in Vistual Studio 2005 stream.good() scheint immer falsch

warum zurückzukehren?

Ich würde wirklich eine Erklärung zu schätzen wissen.

+3

Sie können den ganzen Code nehmen und es durch 4 Zeilen ersetzen, die das gleiche tun, wissen Sie ... http://ideone.com/tLCTl - mit .good() ist fast nie eine gute Idee. Verwenden Sie den Stream-Status, getline gibt den Stream zurück. – etarion

+0

geben Sie mir einen Moment ich versuche, eine andere verdrahtete C++ Sache zu finden ... – Beasly

+0

scheint zu arbeiten. Aber ich würde gerne wissen, warum die gute() Methode nicht gut ist zu verwenden? – Beasly

Antwort

0

diese Frage zu schließen:

Wie etarion sagte, es ist nur eine Frage der good() Methode. Die Verwendung eines anderen Mechanismus funktioniert gut. Danke für Ihre Hilfe!