2017-02-20 4 views
1

ここには、私が書いているプログラムの不完全な部分があります。要約すると、プログラムは入力ファイル(名前とIDから一連の数字)から情報を取り出し、数学を行い、その答えを出力ファイルに出力します。今、プログラムは名前とIDを印刷し、それを何度も何度も印刷します。 ファイルの次の行に移動するC++

教授は、私はgetl​​ineのを使用する必要があり、それdoesntのは私

do 
{ 
    infile >> name >> Id; 
    cout<< name << Id << std::endl; 
    hworkgrade = CalHworkGrade(grade1, infile); 
    printRecord(name, Id, outfile); 
} 
while(!infile.eof()); 
にどんな意味をなすことを言う

の上に私はそれは、次の行に移動名前とIDを印刷したファイルがあるまで繰り返したいです

入力:

 
Morgan 12388671 100 100 100 
John 67894 100 100 100 

出力:

 
Vagts,Morgan 
100100 
100100 
100100 
100100 
100100 
(300,000 more times) 

更新:

do 
{ 
    while (getline (infile, line)) 
    { 
    istringstream iss(line); 
    iss >> name >> Id; 
    cout<< name << Id; 
    hworkgrade = CalHworkGrade(grade1, infile); 
    printRecord(name, Id, outfile); 
    } 
} 

while(!infile.eof());

+1

*すべての行のデータを読んでみませんか?そして、あなたがそれを望んでいなければ、一度に1行を読むために['std :: getline'](http://en.cppreference.com/w/cpp/string/basic_string/getline)を使わないのはなぜですか? –

+0

私はそれを以前に試みましたが、うまくいきませんでした。私はおそらくそれを間違った。あなたは私に手を差し伸べることができますか? – Morgan

+0

これは簡単です: 'while(std :: getline(infile、line)){/ * std :: istringstreamに行を挿入し、その文字列からデータを抽出する* /}' –

答えて

2

使用のgetline(INFILE、「文字列変数」)次の行を読みながら、それは時々そうcin.ignoreを使用読み取るために、次のステートメントとして「エンドライン」を要するため、いつかエラーを引き起こす可能性がGETラインを使用して

();のgetlineステートメントの前または後ろは、どこに最適なのかによって異なります。

+0

これはありがとうございました! – Morgan

+0

@Morganあなたは歓迎です:) –

関連する問題