このプログラムをチェック
ifstream filein("Hey.txt");
filein.getline(line,99);
cout<<line<<endl;
filein.getline(line,99);
cout<<line<<endl;
filein.close();
ファイル Hey.txt には多くの文字が含まれています。1000を優に超える
しかし、私の質問は、なぜ2回目に行を印刷しようとするのかです. 印刷されませんか?
ストリームから行を読み取る慣用的な方法は次のとおりです。
std::ifstream filein("Hey.txt");
for (std::string line; std::getline(filein, line); )
{
std::cout << line << std::endl;
}
ノート:
いいえclose()
。C++ を慣用的に使用すると、リソース管理が自動的に行われます。
std::getline
ストリーム メンバー関数ではなく、free を使用します。
C++ リファレンス ( here ) によると、getline はios::fail
count-1 文字が抽出されたときを設定します。通話filein.clear();
の合間にgetline()
通話する必要があります。
#include<iostream>
using namespace std;
int main()
{
ifstream in;
string lastLine1;
string lastLine2;
in.open("input.txt");
while(in.good()){
getline(in,lastLine1);
getline(in,lastLine2);
}
in.close();
if(lastLine2=="")
cout<<lastLine1<<endl;
else
cout<<lastLine2<<endl;
return 0;
}
Kerrek SB が正しく言ったように 2 つの可能性があります: 1) 2 行目は空行です 2) 2 行目はなく、1000 文字を超える文字はすべて 1 行にあるため、2 行目getline
は何も得られません。