iostream系は引数が覚えにくいという理由で使ってません。 しかし、気まぐれで使ったstringstreamでちょっとした衝撃を受けました。簡易再現コードは以下の通り。 int i; double d; stringstream sstr; sstr << "10.25" sstr << "10.50"; sstr >> i; sstr >> d; 個人的に期待した動作はi=10、d=10.5でしたが・・・ d=0.25になりました。 つまり、最初の文字列の10.25のうち、”10”だけがクリアされて、次の”.25”がdに入ってしまったのです。元のコードはもっと複雑だったため、10分くらい考え込んでしまいました。 この動作はVC++7.1と8.0で確認しています。現在手元に無いため、C++仕様書は確認していませんが、結果をみた後からなら納得できた仕様なので、たぶん仕様でしょう。 しかし