forループの最初の繰り返しの後に、ファイル から配列にdouble値を読み込む際に問題があります。改行文字のために読み込みがなくなりました。どうすればこの問題を回避できますか?入力ファイルのフォームを読み込んでいるときに、<<演算子を使用した後で新しい行をどう扱うか?
サンプル:
単語
2.55
単語< ---今の、これはあなたのデータの場合は
5.66
file.open("productsIn.txt");
if(!file.is_open()){
cout << "Could not open file." << endl;
return 1;
}
if(file.is_open()){
cout << "file open" << endl;
for(int i = 0; i < MAX_COUNT; i++){
getline(file, productName[i]);
file >> prices[i];
if(file.good()){
cout << productName[i] << endl << prices[i] << endl;
}
}
}
file.close();
問題はありませんが、2番目の 'if'文は冗長です。ファイルが開いていなければ、関数は最初の 'if'のために返され、ファイルから読み込もうとするコードには到達しません。また、 'file.close()'を呼び出す必要はありません。 'file'オブジェクトのデストラクタがそれを行います。 –
おそらく[これ](http://stackoverflow.com/questions/21567291/why-does-stdgetline-skip-input-after-a-formatted-extraction)が問題ですが、ファイル内容を確認してください。 – NathanOliver
'getline'とフォーマットされた抽出プログラムを混在させるのは難しいです。 'getline'を使って行を読みとり、' std :: istringstream'を作成して結果の 'string'オブジェクトからdoubleを読み込みます。 –