假设我们有个文件里面有多个int类型(float,doubt类型的也一样,把int改成float或doubt就行)的数据,我们想通过读文件把他存入一个数组中,以便我们对它进行操作。
我们从无到有开始,假设我们还没有这个文件,其实我是想多温习一下这个写文件的操作,嘿嘿,现在我们用代码存入10个int型数据到“test.txt”中。先编写一个write_func()函数。
代码:
void write_func(int a[]) //将数据写入文件
{
ofstream ofs("test.txt",ios::out);
if(!ofs)
{
cout<<"打开失败1"<<endl;
exit(1);
}
for(int i=0;i<10;i++)
{
ofs<<a[i]<<" ";
}
ofs.close(); //关闭文件
}
“test.txt”文件:

然后我们编写一个读文件的read_func()函数,将文件的数据存入数组中。
代码:
void read_func(int buf[])//将文件数据读出到数组
{
ifstream ifs;
ifs.open("test.txt",ios::in);
if(!ifs)
{ cout<<"打开失败2";
exit(1);
}
int cnt=0;
//eof(),文件未结束时返回0,文件结束且正常结束返回1
while(!ifs.eof())
ifs>>buf[cnt++];
//其实这里我理解的是遇到空格或者换行啥的就会cnt++
//意思就是 1 50之间有空格或者换行 一开始cnt==0,buf[0]存入的是1
//继续从1往后扫描遇到空格了 就会将空格以后的int类型也就是50存入buf[1]
ifs.close(); //关闭文件
}
最后我们输出这个存入数据之后的数组,完整代码如下。
代码:
#include<iostream>
#include<fstream>
using namespace std;
void write_func(int a[]) //将数据写入文件
{
ofstream ofs("test.txt",ios::out);
if(!ofs)
{
cout<<"打开失败1"<<endl;
exit(1);
}
for(int i=0;i<10;i++)
{
ofs<<a[i]<<" ";
}
ofs.close(); //关闭文件
}
void read_func(int buf[])//将文件数据读出到数组
{
ifstream ifs;
ifs.open("test.txt",ios::in);
if(!ifs)
{ cout<<"打开失败2";
exit(1);
}
int cnt=0;
while(!ifs.eof()) //eof()文件未结束时返回0 文件结束且正常结束返回1
ifs>>buf[cnt++];
//其实这里我理解的是遇到空格或者换行啥的就会cnt++
//意思就是 1 5之间有空格或者换行 一开始cnt==0,buf[0]存入的是1
//继续从1往后扫描遇到空格了 就会将空格以后的int类型存入buf[1]
ifs.close(); //关闭文件
}
int main()
{
int a[]={1,50,55,55,44,44,44,44,59,52};
int buf[10]={0}; //定义buf数组
write_func(a);
read_func(buf);
for(int i=0;i<10;i++) //打印buf数组
{
cout<<buf[i]<<endl;
}
return 0;
}
输出结果: