c++文件操作 在构造函数中文件已经打开了 为什么读不进数据 非要重新在读取函数内再次打开文件》?

#include<math.h>#include<stdlib.h>#include<process.h>#include<stdio.h>#include<stdlib... #include <math.h>

#include <stdlib.h>
#include <process.h>

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

#include<iostream>
#include <fstream>
#include <cstdlib>
using namespace std;

class getshuju
{
public:

int i;
char filename[20];
short int a[338][8]; //存储整数
ifstream inf; //声明一个输入流对象 用来操作拷贝源文件
getshuju(); //构造函数 初始化
~getshuju(); //析构函数 处理收尾工作
void duqu(); //读取数据的函数
void yanzheng();
};
getshuju::getshuju()
{
char filename[20]="F:\\158\\158.txt";

ifstream inf(filename,ios_base::in);
if(!inf)
{
cout<<"can not open source file"<<filename<<endl;
return;
}

}

getshuju::~getshuju()
{
inf.close();
}
//cin >> filename;
void getshuju::duqu()
{
cout<<"输入i的数值 即总共的期数";
cin>>i;
char filename[20]="F:\\158\\158.txt";
ifstream inf(filename,ios_base::in);
if(inf) //文件打开成功
{
for(int j=0;j<i*8;j++) //读入八个整数
inf>>a[j/8][j%8];
}
else
{
cout << "open file fail" << endl;
exit(1);
}

}

//输出a[i][j]来验证是否正确读入
void getshuju::yanzheng()
{
for(int j=0;j<i*8;j++)
cout<< a[j/8][j%8] << " ";
cout<< endl;

}

int main()
{

getshuju getshuju;

getshuju.duqu();
getshuju.yanzheng();

}

如果将duqu里面改为单独读取数据而没有打开文件的操作后 程序无法读到数据
void getshuju::duqu()
{
cout<<"输入i的数值 即总共的期数";
cin>>i;
char filename[20]="F:\\158\\158.txt";
ifstream inf

for(int j=0;j<i*8;j++) //读入八个整数
inf>>a[j/8][j%8];

}

意思就是 在构造函数中文件已经打开了 为什么读不进数据 非要重新在读取函数内再次打开文件》?
展开
 我来答
catm3
2010-10-06 · TA获得超过511个赞
知道小有建树答主
回答量:234
采纳率:100%
帮助的人:360万
展开全部
稍微改动下

//构造函数
getshuju::getshuju()
:inf("F:\\158\\158.txt",ios_base::in)
{
//char filename[20]="F:\\158\\158.txt";

//ifstream inf(filename,ios_base::in);
if(!inf)
{
cout<<"can not open source file"<<filename<<endl;
return;
}

}

//读取函数
void getshuju::duqu()
{
cout<<"输入i的数值 即总共的期数";
cin>>i;
//char filename[20]="F:\\158\\158.txt";
// ifstream inf(filename,ios_base::in);
if(inf) //文件打开成功
{
for(int j=0;j<i*8;j++) //读入八个整数
inf>>a[j/8][j%8];
}
else
{
cout << "open file fail" << endl;
exit(1);
}

}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式