C++でプログラムを書いているときのこと・・・.
ifstreamから1文字ずつ文字を引っ張ってくるんだけなんだけど、2つひっかかった。
一つ目.
char c; while (ifs >> c) { // ... } ifs.seekg(0); while (ifs >> c) { // ... }
2回目が回らない。これは、ifsの中のeofというエラービットが残ってるから。
} ifs.clear(); ifs.seekg(0); while (ifs >> c) {
とやればうまくいく。
もうひとつは、whitespace. istream君は ifs >> c したときにwhitespaceを読み飛ばすので、fgetc()の代わりにならない。
ifs >> noskipws;
とやればfgetc()の代わりになる。
C++覚えてもIOはstdio使うことが多かったから、iostreamの動作をきちんと覚えてないorz