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() と同様に改行文字は切り捨てるとのこと。
使わないので知らなかった。