C++对ASCII文件的读写操作
时间:2014-11-14 19:25 点击:次
如果文件的每一个字节中均以ASCII代码形式存放数据,即一个字节存放一个字符,这个文件就是ASCII文件(或称字符文件)。程序可以从ASCII文件中读入若干个字符,也可以向它输出一些字符。
对ASCII文件的读写操作可以用以下两种方法:
1) 用流插入运算符“<<”和流提取运算符“>>”输入输出标准类型的数据。“<<”和“ >>”都巳在iostream中被重载为能用于ostream和istream类对象的标准类型的输入输出。由于ifstream和 ofstream分别是ostream和istream类的派生类, 因此它们从ostream和istream类继承了公用的重载函数,所以在对磁盘文件的操作中,可以通过文件流对象和流插入运算符“<<”及 流提取运算符“>>”实现对磁盘 文件的读写,如同用cin、cout和<<、>>对标准设备进行读写一样。
2) 用文件流的put、get、geiline等成员函数进行字符的输入输出
[例13.11] 有一个整型数组,含个元素,从键盘输入个整数给数组,将此数组送到磁盘文件中存放。
- #include <fstream>
- using namespace std;
- int main( )
- {
- int a[10];
- ofstream outfile("f1.dat",ios::out);//定义文件流对象,打开磁盘文件"f1.dat"
- if(!outfile) //如果打开失败,outfile返回值
- {
- cerr<<"open error!"<<endl;
- exit(1);
- }
- cout<<"enter 10 integer numbers:"<<endl;
- for(int i=0;i<10;i++)
- {
- cin>>a[i];
- outfile<<a[i]<<" ";
- } //向磁盘文件"f1.dat"输出数据
- outfile.close(); //关闭磁盘文件"f1.dat"
- return 0;
- }
- #include <fstream>
- using namespace std;
- int main( )
- {
- int a[10],max,i,order;
- //定义输入文件流对象,以输入方式打开磁盘文件f1.dat
- ifstream infile("f1.dat",ios::in|ios::nocreate);
- if(!infile)
- {
- cerr<<"open error!"<<endl;
- exit(1);
- }
- for(i=0;i<10;i++)
- {
- infile>>a[i]; //从磁盘文件读入10个整数,顺序存放在a数组中
- cout<<a[i]<<" "; //在显示器上顺序显示10个数
- }
- cout<<endl;
- max=a[0];
- order=0;
- for(i=1;i<10;i++)
- if(a[i]>max)
- {
- max=a[i]; //将当前最大值放在max中
- order=i; //将当前最大值的元素序号放在order中
- }
- cout<<"max="<<max<<endl<<"order="<<order<<endl;
- infile.close();
- return 0;
- }
- #include <fstream>
- using namespace std;
- // save_to_file函数从键盘读入一行字符,并将其中的字母存入磁盘文件
- void save_to_file( )
- {
- ofstream outfile("f2.dat"); //定义输出文件流对象outfile,以输出方式打开磁盘文件f2.dat
- if(!outfile)
- {
- cerr<<"open f2.dat error!"<<endl;
- exit(1);
- }
- char c[80];
- cin.getline(c,80); //从键盘读入一行字符
- for(int i=0;c[i]!=0;i++) //对字符逐个处理,直到遇'/0'为止
- if(c[i]>=65 && c[i]<=90||c[i]>=97 && c[i]<=122) //如果是字母字符
- {
- outfile.put(c[i]); //将字母字符存入磁盘文件f2.dat
- cout<<c[i]; //同时送显示器显示
- }
- cout<<endl;
- outfile.close(); //关闭f2.dat
- }
- //从磁盘文件f2.dat读入字母字符,将其中的小写字母改为大写字母,再存入f3.dat
- void get_from_file()
- {
- char ch;
- //定义输入文件流outfile,以输入方式打开磁盘文件f2.dat
- ifstream infile("f2.dat",ios::in|ios::nocreate);
- if(!infile)
- {
- cerr<<"open f2.dat error!"<<endl;
- exit(1);
- }
- ofstream outfile("f3.dat");
- //定义输出文件流outfile,以输出方式打开磁盘文件f3.dat
- if(!outfile)
- {
- cerr<<"open f3.dat error!"<<endl;
- exit(1);
- }
- while(infile.get(ch)) //当读取字符成功时执行下面的复合语句
- {
- if(ch>=97 && ch<=122) //判断ch是否为小写字母
- ch=ch-32; //将小写字母变为大写字母
- outfile.put(ch); //将该大写字母存入磁盘文件f3.dat
- cout<<ch; //同时在显示器输出
- }
- cout<<endl;
- infile.close(); //关闭磁盘文件f2.dat
- outfile.close(); //关闭磁盘文件f3.dat
- }
- int main( )
- {
- save_to_file( ); //调用save_to_file( ),从键盘读入一行字符并将其中的字母存入磁盘文件f2.dat
- get_from_file( ); //调用get_from_file(),从f2.dat读入字母字符,改为大写字母,再存入f3.dat
- return 0;
- }
- #include <fstream>
- using namespace std;
- void display_file(char *filename)
- {
- ifstream infile(filename,ios::in|ios::nocreate);
- if(!infile)
- {
- cerr<<"open error!"<<endl;
- exit(1);
- }
- char ch;
- while(infile.get(ch))
- cout.put(ch);
- cout<<endl;
- infile.close();
- }
- // 然后在调用时给出文件名即可
- int main( )
- {
- display_file("f3.dat");//将f3.dat的入口地址传给形参filename
- return 0;
- }
顶一下
(2)
66.7%
踩一下
(1)
33.3%
上一篇:C++文件的打开与关闭
下一篇:C++对二进制文件的读写操作
相关内容:
最新内容
热点内容
- QQ群
-
微信
- 返回首页
- 返回顶部