読者です 読者をやめる 読者になる 読者になる

C++のstd::stringstream#eofの挙動について。

C++にはstd::stringstreamという便利なクラスがあるけど、それのeofメソッドの挙動が思ったとおりでないので備忘録として

予想していた挙動

std::stringstream ss("aaa");

for(int i = 0; i < 3; i++) ss.get(); // 1文字読み出し

ss.eof(); // 文字列の末尾に来たのだからtrueだろう

ss.get() // EOFが返ってくるだろう

ss.eof() // 当然ここはtrueだろう

実際の挙動

std::stringstream ss("aaa");

for(int i = 0; i < 3; i++) ss.get(); // 1文字読み出し

ss.eof(); // 最後に読み出した文字はEOFでないのでfalse

ss.get() // EOFが返ってくる

ss.eof() // ようやくここでtrue

これで軽く2時間くらい悩まされてました、、、

「ICTSC4 問1 Webサーバを構築してくださいな」を解いてみた。

NTT東日本杯 第7回 ICTトラブルシューティングコンテストに参加させていただくことになったのですが、、、

まぐれで、通ってしまったのではないのか、、、

というほど自信がありません。。。

とはいえ、「自信がないから、やらな〜い」という風にはできないので、ちゃんと過去問くらいは目を通しておこうかなと思って解いてみました。

続きを読む