iostream と streambuf

getline(buffer,len,delimit) と get(buffer,len,delimit) の違い。

getline(buffer,len,delimit) は delimit文字まで読み出す。

従って読み出し数(gcount())は delimit 文字まで含んだ数である。 ただし、delimit文字は受け取りbuffer には渡されず、0が置かれる。 delimit文字から始まる行であっても 読み出し数は1なので、fail()しない。

この関数は、(len - 1) 文字読み出しても delimit 文字が 現れない時は、fail() する(terminating null-character まで含んで len 文字)。

get(buffer,len,delimit) は delimit文字の直前まで読み出す。

読み出し数(gcount())には delimit文字は含まれないし、受け取り buffer にも当然含まれない。更に delimit文字は(検出はされるが)読み出され ないので、連続して get(buffer,len,delimit) すると、 必ず fail() する(次の読み出しの 最初の文字が delimit文字なので読み出し数が 0になる)。

この関数が fail() するのは、読み出し数が 0 の時、 または読み出した delimit 文字が戻せない時である。 (len - 1) 文字読み出しても delimit 文字が 現れなくとも fail() はしない。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-08-27 (木) 14:14:20