0
我试图从文本文件中读取数据(很差),它给了我非常奇怪的输出。我做了大量的研究,我看不出有什么太明显的地方,我在这里做错了。从文件中读取字符串的C++给出了“-9.25596e + 61”
这是我试图从文件读取:
Duck, Daffy
77.3
Pluto
88.0
Duck, Donald
94.3
Mouse, Mickey
80.0
Mouse, Minnie
94.3
这是我的函数:
int inputData(string names[], double averages[], int size)
{
ifstream inputFile;
inputFile.open("StudentData.txt");
int count = 0;
for (int i = 0; i < size; i++)
{
if (i == 0 || i % 2 == 0)
{
string name;
inputFile >> name;
cout << name;
if (name.find(','))
{
inputFile >> name;
cout << name;
}
}
else
{
inputFile.ignore();
inputFile >> averages[i];
cout << endl << averages[i] << endl;
}
count++;
}
inputFile.close();
return count/2;
}
这里是当我尝试运行它真是个奇怪的输出:
Duck,Daffy
77.3
Pluto88.0
-9.25596e+61
-9.25596e+61
-9.25596e+61
-9.25596e+61
从输出中,这是很明显,你读过'88.0'冥王星的名字。阅读关于'string :: find'的文档并查看它返回的内容。 (提示:这不是'bool'。) – molbdnilo
@molbdnilo你真不可思议。我把它改成了'if(name.find(',')!= -1)',现在它可以工作。提交你的评论作为答案,我可以接受它吗? – SpiroMarshes
'if(i == 0 || i%2 == 0)' - 测试可以简单地写成'if(i%2 == 0)' – PaulMcKenzie