文件输入输出流01(C++)

手工在程序所在目录下创建 1 个文本文件 Data.txt,该文件中存放了 9 个 int 数据,各数据之间以空格间隔。编写 1 个程序,使用文件流的相关方法顺序完成以下操作:
a) 读取文件 Data.txt 中的所有数据;
b) 将读取得到的数据以二进制的形式存放到程序所在目录下的文件 Res.dat 中;
c) 再次读取 Res.dat 中的所有数据;
d) 并将这些数据以文本文件的形式存放到程序所在目录下的 Res.txt 文件中,存放时每行 2 个数据,每个数据占 10 列,右对齐,左边补'C'字符
 

/*===========================================================================================================
*学号:1527403059
*作业:E02
*功能:手工在程序所在目录下创建一个文本文件Data.txt,该文件中存放了9个int数据,各数据之间以空格间隔。
       。编写一个程序,使用文件流的相关方法顺序完成以下操作:
	   (a)、读取文件Data.txt中的所有数据。
	   (b)、将读取得到的数据以二进制的形式存放到程序所在目录下的文件Res.dat中。
	   (c)、再次读取Res.dat中的所有数据。
	   (d)、并将这些数据以文本文件的形式存放到程序所在目录下的Res.txt文件中,存放时每行2个数据,每个数据占
	          10列,右对齐,左边补'C'字符
*作者:陆胤任
*日期:2016.3.6
*============================================================================================================*/

#include<iostream>
#include<fstream>
#include<iomanip>

using namespace std;
const int N=9;                                                  //定义常量

int main()
{
	int arry[N],i;
    fstream in,out1,out2;
	int count;
	in.open("Data.txt",ios::in);                               //输入,读取文件数据
	out1.open("Res.dat",ios::out|ios::binary);                 //创建二进制文件,输出数据
	if(!in)                                                    //检验文件是否打开失败
	{
		cout<<"open file fail!\n";
		exit(0);
	}
	count=0;
	while(in>>arry[count])                                     //将文件数据内容存入数组                           
	{
		count++;
	}
	cout<<"文件中是数据内容为:"<<endl;
	for(i=0;i<N;i++)                                            //显示文件数据内容
	{
		cout<<arry[i]<<" ";
	}
	cout<<"\n";
	for(i=0;i<N;i++)                                           //将文件数据转换为二进制存放在二进制文件中
	{
		out1.write((char*)&arry[i],sizeof(int));
	}
	in.close();                                              //关闭文件
	out1.close();                                            //关闭文件
	out1.open("Res.dat",ios::in|ios::binary);            
	out2.open("Res.txt",ios::out);                              //文本文件
	for(i=0;i<N;i++)
	{
		out1.read((char*)&arry[i],sizeof(int));            //读取二进制文件保存在数组中
	}
	int k=0;
	for(i=0;i<N;i++)                                        //将二进制文件中的数据存放在文本文件中
	{
		out2<<setw(10)<<right<<setfill('C')<<arry[i]<<" ";
		k++;
		if(k%2==0)
		{
			out2<<'\n';                                      //换行
		}
	}
	out1.close();                                           //关闭文件     
	out2.close();                                            //关闭文件
}

猜你喜欢

转载自blog.csdn.net/ukco_well/article/details/82219007