我对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();
输入是一份成分清单,有关它们的一些营养成分设置如下:
成分1(1+个单词); amountOfUnitsInServingSize(float)unitType(1个字)caloriesPerServing(float) 成分2(1+字); amountOfUnitsInServingSize(float)unitType(1个字)caloriesPerServing(float)
我的问题是,当我尝试从文件中输入内容时,它会卡在其中一个while循环中(如果内部的一个被注释掉)。当我输入调试代码时,它表示它实际上没有从文件中获取任何输入。
提前谢谢!
答案 0 :(得分:0)
同时检查内部while循环上的eof。
答案 1 :(得分: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);
}
祝你好运;)