注册 登录
编程论坛 C++教室

ifstream问题

shanyuxiyun 发布于 2010-05-15 20:16, 544 次点击
#include<iostream>
#include<fstream>
#include<cassert>
#include<cstdlib>
using namespace std ;

int main()
{
    ofstream out ;
    out.open("D:\\data.dat",ios_base::out);
    assert(out);
   
    int i ;
    const int size = 10 ;
    int data ;
    for(i = 0 ; i<size ;i++)
    {
          data = rand() ;
          out<<data<<"\t";
    }
    out<<endl;
    out.close() ;
   
    ifstream in("D:\\data.dat");
    assert(in);
    int cnt = 0 ;
    while(!in.eof())
    {
    in>>data ;
    cnt ++ ;
    }
    cout<<"cnt="<<cnt<<endl;
    system("pause");
    return 0 ;
   
    }
为什么cnt是11?
而不是10!
3 回复
#2
DAVID_LIU2010-05-18 17:03
///////////////
 while(!in.eof())
    {
    in>>data ;
    cnt ++ ;
    }
////////////////
改成下面就行了
while(!in.eof())
    {
        cnt ++ ;
      in>>data ;

    }
#3
猎豹2010-05-20 13:12
好像还不行
#4
yc25757572010-05-20 16:14
#include<iostream>
#include<fstream>
#include<cassert>
#include<cstdlib>
using namespace std ;

int main()
{
    ofstream out ;
    out.open("D:\\data.dat",ios_base::out);
    assert(out);
   
    int i ;
    const int size = 10 ;
    int data ;
    for(i = 0 ; i<size ;i++)
    {
          data = rand() ;
          if (i!=size-1)
          {
              out<<data<<"\t";
          }

    }
    out<<endl;
    out.close() ;
   
    ifstream in("D:\\data.dat");
    assert(in);
    int cnt = 0 ;
    while(!in.eof())
    {
    in>>data ;
    cnt ++ ;
    }
    cout<<"cnt="<<cnt<<endl;
    system("pause");
    return 0 ;
   
}
1