0

ifstream と getline の組み合わせに問題があります。私はテキスト文書を持っています:

1020123456
Madison Williams
90
88
79
86
90

そして、学生が学生のタイプであるstudents[0].name場所に名前を割り当てたいです。struct使ってみた

inFile >> students[0].id;
getline(inFile, students[0].name);

"cout << students[0].id"IDは適切に生成されますが、 .name は何もしません。

ここで何が間違っていますか?

そして"inFile.getline(students[0].name)"、エラーが発生します。

4

1 に答える 1

1

数字の後に'\n'文字があります。inFile >> students[0].id;数字を読むときは、'\n'文字にとどまります。次に、あなたのストリームにgetline()その'\n'文字が残っているので、空の文字列を読み取り、 をスキップし'\n'て、次の行 (あなたの名前がある場所) に移動します。

'\n'番号を読んだ後、電話をかける前にをスキップする必要がありますgetline()。呼び出しは、キャラクターに出会うまで、 inFile.ignore(std::numeric_limits<std::streamsize>::max(), '\n');残っているものを無視します。したがって、次のように変更します。inFile'\n'

inFile >> students[0].id;
inFile.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
getline(inFile, students[0].name);
// continue as normal...
于 2012-11-30T06:42:44.627 に答える