ここに初心者の間違いがあると確信していますが、私の人生にとってはそれを理解できません。C++ getline()は行末で停止しませんか?
getline()
を使用して、2つのワード線(姓と名)を読み込み、名前を構造体のメンバーフィールドにソートしようとしています。しかし、getline()
は、行末を過ぎて、次の行の最初の単語を、それが得られるはずの行の最後の単語に追加しているように見えます。
つまり、行の最後の単語を読み取ろうとすると、getline()
はその単語と次の行の最初の単語を読み取っています。
入力ファイルの形式は次のとおりです。
シアトル・マリナーズ
Norichiki青木
セス・スミス
ロビンソン・カノ
ここに私のコードです:
struct Player {
string firstName;
string lastName;
float avg;
};
struct Team {
Player roster[8];
string teamName;
};
Team home = {};
stringstream iss;
string token;
string lineread;
while (getline(inFile, lineRead, '\n')){
iss << lineRead;
if (getline(iss, token, ' '))
{
if(s % 2 == 0)
home.roster[s/2].firstName = lineRead;
else
home.roster[s/2].lastName = lineRead;
}
s++;
cout << "token:" << token << endl;
}
出力私はgですettingは次のようになります。
トークン:シアトル
トークン:MarinersNorichiki
トークン:AokiSeth
トークン:SmithRobinson
しかし、私は
トークンを持っていると思いを:シアトル
トークン:マリナーズ
トークン:Norichiki
トークン:青木もっとこの代わりのようなものを試してみてください
問題は 'getline()'の使用とは関係ありません。あなたが期待する出力は 'stringstream'演算子' << 'が前の内容をクリアすることを要求します。それはしません。 – Peter
なぜgetlineを2回使用するのですか? 's'変数は何ですか? **すべての**関連コードを含めてください。ありがとうレミー。 –