2016-05-17 13 views
0

infeasibleをテキストファイルにエクスポートしようとしましたが、コードが次の構文エラーでコンパイルされません。 '(std :: list )(std :: list :: iterator &) '|C++:リストコンテナに保存されたデータをテキストファイルに出力

list<solution> feasible, infeasible; 

    for(list<solution>::iterator it = merged.begin(); it != merged.end(); it++) { 
     mutation(*it, input); 
     if(it->feasible) 
      feasible.push_front(*it); 
     else { 
      infeasible.push_front(*it); 
      ofstream outfile; 
      outfile.open("output.txt"); 
      for(list<solution>::iterator it2 = infeasible.begin(); it2 != infeasible.end(); it2++) 
       outfile<<infeasible(*it2)<<std::endl; 
      } 
     } 
+2

どのようなエラーメッセージが表示されますか? –

+0

[MCVE]を入力してください。 –

+0

実行不可能なものが見つかるたびに、ファイルを最初から書き直しているようです。それは意図的なのでしょうか?どうして? –

答えて

0

予備発言:merged内のすべての項目について、あなたは以前のものを上書きし、同じ名前の新しいファイルを作成します。これを避けるため、常に同じファイルの末尾に新しい出力を追加し、使用したい場合:

 outfile.open("output.txt", ios::app); 

クラスsolutionは、少なくともメンバーfeasibleが含まれ、その機能mutation()が適切に定義されていると仮定すると、そのmergedlist<solution>であり、あなたがsolution用インサータ定義されていること:あなたがメートルに少しあなたのコードを変更することができその後

ostream& operator<< (ostream& os, const solution &s) { 
    return os<<"??"; //t.b.d. 
} 

をコンパイル:

for(auto it = merged.begin(); it != merged.end(); it++) { 
     mutation(*it, input); 
     if(it->feasible) 
      feasible.push_front(*it); 
     else { 
      infeasible.push_front(*it); 
      ofstream outfile; 
      outfile.open("output.txt", ios::app); 
      for(auto it2 = infeasible.begin(); it2 != infeasible.end(); it2++) 
       outfile<<*it2<<std::endl; // use directly *it2 
     } 
    } 
+0

これはコンパイルされますが、 "os"に値を代入してoutput.txtというファイルに書き込むことはできません。現在、 "??"という文字が印刷されています。予想通り。 – Far

関連する問題