好的,所以我的代码一切正常,但是有一个小问题,我有一个我想要读取的输入文件,有时一个数字被一个字母替换。该文件可能如下所示:
3.5
45.8
gh
67.34
39.5
sj
4.73
我想知道在我读完所有值后有两个号码丢失了。目前我的代码只是忽略了它们,好像它们不在那里。我试过这个:
double line;
int i = 0;
int j = 0;
while (myfile >> line) {
if (myfile.fail()) {
cout << "Error, line is not a number." << endl;
j = j + 1;
}
mydata[i] = line;
i = i + 1;
}
但代码没有打印错误消息!为什么不?谢谢。
(i
计算数字,j
应该计算错误数)
答案 0 :(得分:2)
while (myfile >> line)
{
if (myfile.fail())
{
cout << "Error, line is not a number." << endl;
j = j + 1;
}
mydata[i] = line;
i = i + 1;
}
您的问题是第一行while (myfile >> line)
在到达false
行时会评估为gh
,因此您的条件会被完全跳过。如果您想要计算错误,您的代码需要更像
std::string sLine;
while (std::getline(myfile, sLine))
{
std::istringstream iss(sLine);
if (!(iss >> line))
{
cout << "Error, line is not a number." << endl;
++j;
}
else
{
mydata[i] = line;
++i;
}
}