私は、ファイルから情報を読み込んで構造体に格納するコードに取り組んでいます。それは私がそれ以外の多くの異なったエラーでそれを投げるすべてのファイルに作用しています。 ファイルにエラーがあると、それに続く行がスキップされてしまい、その理由がわかりません。私のコードは以下の通りです:ファイル内の行をスキップするfin.ignore()?
void readFile(char fileName[], accessRecord file[])
{
ifstream fin(fileName);
int i = 0;
while (fin.good())
{
fin >> file[i].fileName >> file[i].userName
>> file[i].timeStamp;
i++;
if (fin.fail())
{
fin.clear();
fin.ignore(256, '\n');
}
}
fin.close();
}
これは問題を引き起こしているFileです。
'timestamp'を読むとき、改行を使い、" schedule.docx "を消費しようとしています。あなたが無視を実行すると、 "schedule.docx"行の終わりまで無視されます... – scohe001
Sorta Duplicate:[行ごとにファイルを読む](https://stackoverflow.com/questions/7868936/read-ファイル行ごとに)。アンサー1オプション2を使用すると、クリアしたり無視したりするときに遭遇する問題のほとんどが排除されます。また、配列の代わりに 'std :: vector'を使用できるかどうかを確認してください。できない場合は、関数からiを返すことを強くお勧めします。何行目に読み込まれたか知っていて、推測によって未定義の動作を誘惑する必要はありません。 – user4581301
これは問題ではありませんが、最後にファイルを閉じる必要はありません。デストラクタはそれを行います。 –