fgets と getline
stream 慣れない。。
C++er には常識なんだろうけど、一応メモ。
- fgets(buf, sizeof buf, fp) は改行文字とNULL文字('\0')を含めて buf に sizeof buf バイト 書き込む。
- つまり実質 sizeof(buf) - 2 = strlen(buf)-1 バイトの文字列を得ることができる。
- istream::getline(buf, sizeof buf) はNULL文字は含むが改行文字を入れずに buf に sizeof buf バイト書き込む。
- 実質 sizeof(buf) - 1 = strlen(buf) バイトの文字列を得ることができる。
追記
実は gets() も istream::getline() と同様に改行文字は切り捨てるとのこと。
使わないので知らなかった。