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];
}
意思就是 在构造函数中文件已经打开了 为什么读不进数据 非要重新在读取函数内再次打开文件》? 展开
#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];
}
意思就是 在构造函数中文件已经打开了 为什么读不进数据 非要重新在读取函数内再次打开文件》? 展开
展开全部
稍微改动下
//构造函数
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);
}
}
//构造函数
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);
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询