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() はしない。 |