欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-17 09:13:52
...

手工在程序所在目录下创建 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();                                            //关闭文件
}