このプログラムをチェック
ifstream filein("Hey.txt");
filein.getline(line,99);
cout<<line<<endl;
filein.getline(line,99);
cout<<line<<endl;
filein.close();
Hey.txtファイルには、多数の文字が含まれています。 1000以上
しかし、私の質問は、なぜ2回目に行を印刷しようとするかです。印刷されませんか?
C++リファレンス( ここ )によれば、getlineは、count-1文字が抽出されたときに_ios::fail
_を設定します。 filein.clear();
の呼び出しの間にgetline()
を呼び出す必要があります。
したがって、ストリームから行を読み取る慣用的な方法は次のとおりです。
_{
std::ifstream filein("Hey.txt");
for (std::string line; std::getline(filein, line); )
{
std::cout << line << std::endl;
}
}
_
注意:
いいえclose()
。 C++は、慣用的に使用すると、リソース管理を処理します。
ストリームメンバー関数ではなく、無料の_std::getline
_を使用します。
Kerrek SBが正しく言ったように、2つの可能性があります。1)2行目が空の行である2)2行目がなく、1000文字を超える文字が1行にあるため、2番目のgetline
には何も取得できません。