我正在尝试从文件中读取数字

时间:2015-04-30 15:25:37

标签: c++ eof

#include <iostream>
#include <fstream>
#include <cstdio>
#include <stdio.h>
using namespace std;
int v[101];

int main()
{
int max=0; int a,i;
ifstream f("bac.in");
ofstream g("bac.out");

while(!EOF(f))
{
    f >> a;
    while(a>10)
      if(a%10!=0 && (a/10)%10!=0)  v[a%100]++;
    a/=10;
}
for(i=10;i<=99;i++) if(v[i]>max) max=v[i];
for(i=10;i<=99;i++) if(v[i]==max) g<<i;

}

我收到错误 14 |错误:' - 1'不能用作函数
如果我使用eof而不是EOF我得到错误'eof'未包含在此范围但我已经包含 cstudio studio.h
我应该改变什么?

1 个答案:

答案 0 :(得分:1)

EOF不是一个函数,它是一个常量。但是,您不应该使用eof来查找文件末尾(here is why)。

将读取本身放入循环标题中,如下所示:

while(f >> a) {
    while(a>10)
      if(a%10!=0 && (a/10)%10!=0)  v[a%100]++;
    a/=10;
}

这样做的原因是返回f >> a的{​​{1}}有一个转换运算符 * ,它允许将表达式用作条件。当读取成功时,结果条件评估为istream;否则,它是true

* 转换的细节在C ++ 98和C ++ 11/14中有所不同,但无论C ++标准如何,表达式仍然有效。