0

私はC++にかなり慣れておらず、テキストファイルからの入力を取得するのに問題があります。

関連コード:

vector<string> nutrientName;
vector<float> nutrientAmount;
vector<string> nutrientUnits;
vector<float> nutrientCalories;

ifstream nutrientFile;
nutrientFile.open(nutrientFileName);
float newAmount = 0;
string newUnit;
float newCalories = 0;

while (!nutrientFile.eof())
{
    int place = 0;
    char nameArray [50];


   while(c != ';')
    {
        if (c != '\n')
            nameArray[place] = c;

        c = nutrientFile.get();
        place++;
    }

    string newName(nameArray, place);
    nutrientName.push_back(newName);

    nutrientFile >> newAmount;
    nutrientAmount.push_back(newAmount);

    nutrientFile >> newUnit;
    nutrientUnits.push_back(newUnit);

    nutrientFile >> newCalories;
    nutrientCalories.push_back(newCalories);

}

nutrientFile.close();

入力は、成分のリストとそれらに関するいくつかの栄養成分が次のように設定されています。

Ingredient1(1+ワード); amountOfUnitsInServingSize(float)unitType(1 word)caloriesPerServing(float)Ingredient2(1+ words); amountOfUnitsInServingSize(float)unitType(1 word)caloriesPerServing(float)

私の問題は、ファイルから何かを取り込もうとすると、whileループのいずれかでスタックすることです(内側のループがコメント化されている場合)。デバッグコードをスローすると、ファイルから実際に入力を取得していないことが示されます。

前もって感謝します!

4

2 に答える 2

0

内側のwhileループのeofも確認してください。

于 2013-02-28T00:15:01.073 に答える
0

2つか3つの問題があります。

コメントを見てください:

while (nutrientFile.good() == true)   // use good() its more safe with your implementation
{
      int  place = 0;
      char nameArray [50];
      char c;                         // not defined    

      c = nutrientFile.get();         // was not init
      while (c != ';')
      {
             if (c != '\n')
                  nameArray[place] = c;
             c = nutrientFile.get();
             place++;
      }
      string newName(nameArray, place);
      nutrientName.push_back(newName);
      nutrientFile >> newAmount;
      nutrientAmount.push_back(newAmount);
      nutrientFile >> newUnit;
      nutrientUnits.push_back(newUnit);
      nutrientFile >> newCalories;
      nutrientCalories.push_back(newCalories);
}

幸運を ;)

于 2013-02-28T00:39:29.673 に答える