2017-03-27 8 views
0

ファイルからすべての行を、行ごとにfstream変数で読み込みたいとします。例えばfstream変数テキストファイル内のすべての行を取得する

#include <fstream> 

fstream fsFile; 

fsfile.open("file.txt", ios::in); 

while (fsFile.getline(szLine, LINE_SIZE + 1)) 
{ 
    cout << szLine << endl; 
} 

私はすべての行を読みたいが、私はfsFile.bad() trueを返しLINE_SIZEよりも大きいラインを持って、私はそれを得ます。
しかし、私はどのようにそれがfsFile.getline(szLine, LINE_SIZE + 1)突然falseを返すか知りたいですか?
関数の戻り値は何ですか?
nullと私はそれがなぜだと思いますnull
そして、それがないときはnullそれは何を返しますか?
ご協力いただきありがとうございます。

答えて

2

getlinestd::stringバージョンを使用します

std::ifstream fsFile("file.txt"); 
std::string line; 
while(std::getline(fsFile, line)) { 
    std::cout << line << '\n'; 
} 

getline(両方のバージョン)は、通常、我々ので、あなたは読み取りが失敗した場合、それは状態(だ確認することができますboolに変換されたストリームへの参照を返しますファイルの最後にヒットします)。

このバージョンのgetlineは、std::stringを使用することで、メモリバッファーの心配を完全にやめることができます。自分でそれを作成し、それを破壊することを忘れないでください。ラインのサイズを気にする必要はありません。 using namespace std;endl


また、多くの場合、悪い習慣と考えられるものの使用を再考してください。

関連する問題