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;
なぜ機能しないのですか?
通常、文字列ストリームを「リセット」するには、str
を使用して基になるシーケンスを空の文字列にリセットし、clear
を使用して失敗およびeofフラグをクリアする必要があります。
parser.str( std::string() );
parser.clear();
通常起こることは、最初の>>
は文字列の最後に到達し、eofビットを設定しますが、最初のshortは正常に解析されます。ストリームのeofビットがまだ設定されているため、この後のストリームに対する操作はすぐに失敗します。