ソースファイルを読み込んで個々の文字をバッファに格納するときに、.get()
メソッドはC++でファイルの最後に達したときにNULL
を返し、読み込める文字がないことがわかりますか?この場合の.get()
メソッドはiostream
ライブラリからのものです。C++の.get()はファイルの読み取りにnullを返しますか?
#include <iostream>
#include <fstream>
#include <list>
...
char c = source_file.get();
while(bufferList.size() < MAX_BUFFER_SIZE)
{
if (c != NULL)
{
... // Add chars to buffer.
}
else // c is Null
{
bufferList.push_back('$');
}
// Get the next char from the file
c = source_file.get();
}
ここでは、$
を使用してEOFマーカーを象徴しています。
if (c != NULL)
の代わりにif(c)
と言うことができますか?それは同じことを意味し、c
がNULL
の場合、if(c)
はfalseと評価されますか?
'c'はポインタではありません。この場合、デフォルトではint型になります –
source_fileが非常に終わりに達しているかどうかテストするにはどうすればよいですか? – user3869795
'fstat'を呼び出して、' st_size'値を見てから、その数バイトを読み込みます。 –