因此,我正在尝试读取此文件。一切看起来都应该正常工作,但是在运行时程序超时并停止工作,我必须关闭它。到底是怎么回事?我怀疑oef()测试永远不会返回true,并且会继续在文件中寻找更多内容。我没有在文本文件中拖动空行。我试着像疯了似的调试它。我找不到任何错误,但仍然无法正常工作。
Pet** petArray;
ifstream textFile2;
textFile2.open("pets.txt");
int i = 0;
string temp;
int tmpNum = 0;
if (textFile2.is_open())
{
while (!textFile2.eof())
{
getline(textFile2, temp);
petArray = new Pet*[arraySize];
if (temp == "Dogs" || temp == "Cats" || temp == "Iguanas" || temp == "Pigs")
{
if (temp == "Dogs") tmpNum = 0;
if (temp == "Cats") tmpNum = 1;
if (temp == "Iguanas") tmpNum = 2;
if (temp == "Pigs") tmpNum = 3;
temp == "";
}
else
{
if (tmpNum == 0)
{
petArray[i] = new Dog(temp);
cout << "Dog " << temp << " added" << endl;
}
if (tmpNum == 1)
{
petArray[i] = new Cat(temp);
cout << "Cat " << temp << " added" << endl;
}
if (tmpNum == 2)
{
petArray[i] = new Iguana(temp);
cout << "Iguana " << temp << " added" << endl;
}
if (tmpNum == 3)
{
petArray[i] = new Pig(temp);
cout << "Pig " << temp << " added" << endl;
}
arraySize++;
}
i++;
}
}
这是文本文件的格式:
Dogs
d1
d2
Cats
c1
c2
Iguanas
i1
i2
Pigs
p1
p2
有什么建议么?
最佳答案
尝试读取内容后,eof
返回true ,操作失败。因此,将其放在getline
之后。
编辑:尝试此代码:vector<Pet*> petArray;
ifstream textFile2("pets.txt");
string temp;
int tmpNum = 0;
while (getline(textFile2, temp))
{
if (temp == "Dogs") tmpNum = 0;
else if (temp == "Cats") tmpNum = 1;
else if (temp == "Iguanas") tmpNum = 2;
else if (temp == "Pigs") tmpNum = 3;
else
{
if (tmpNum == 0)
{
petArray.push_back(new Dog(temp));
cout << "Dog " << temp << " added" << endl;
}
if (tmpNum == 1)
{
petArray.push_back(new Cat(temp));
cout << "Cat " << temp << " added" << endl;
}
if (tmpNum == 2)
{
petArray.push_back(new Iguana(temp));
cout << "Iguana " << temp << " added" << endl;
}
if (tmpNum == 3)
{
petArray.push_back(new Pig(temp));
cout << "Pig " << temp << " added" << endl;
}
}
}
关于c++ - C++ eof()问题-永远不会返回true?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3842030/