C++对ASCII文件的操作例子
从键盘读入一行字符,把其中的字母字符依次放在磁盘文件f2.dat中,再把它从磁盘文件读入程序,将其中的小写字母改写成大写字母,再存入磁盘文件f3.dat.
code:
#include<iostream> #include<fstream> #include<cstdlib> 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]; cout<<"please input something:"<<endl; 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文件 } //get_from_file函数从磁盘读入字符,将其中的小写字母改为大写字母,然后存回 void get_from_file() { char ch; ifstream infile("f2.dat",ios::in); //定义输入文件流outfile,以输入方式打开磁盘文件f2.dat 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(); outfile.close(); } int main() { save_to_file(); //调用save_to_file(),从键盘输入数据并保存到磁盘 get_from_file(); //调用get_from_file(),从磁盘打开文件,并操作,然后写回磁盘 return 0; }
输出结果:
/* please input something: SDJKJKkjkjkl232343KJKLJKJKLJsjkdfjkdsjKLJKJKL SDJKJKkjkjklKJKLJKJKLJsjkdfjkdsjKLJKJKL SDJKJKKJKJKLKJKLJKJKLJSJKDFJKDSJKLJKJKL */
第一行为我输入的数据,第二行是f2.dat中的数据,第三行是f3.dat中的数据。
我们还可以通过type命令,查看f2.dat和f3.dat中的数据。
/* C:\Users\hp>cd /d e:\test e:\test>dir 驱动器 E 中的卷是 Work 卷的序列号是 0FBA-069C e:\test 的目录 2013/12/11 22:00 <DIR> . 2013/12/11 22:00 <DIR> .. 2013/12/11 22:00 39 f2.dat 2013/12/11 22:00 39 f3.dat 2013/12/11 21:58 1,661 one.cpp 2013/12/11 22:00 6,560,425 one.exe 4 个文件 6,562,164 字节 2 个目录 207,104,806,912 可用字节 e:\test>type f2.dat SDJKJKkjkjklKJKLJKJKLJsjkdfjkdsjKLJKJKL e:\test> e:\test> e:\test>type f3.dat SDJKJKKJKJKLKJKLJKJKLJSJKDFJKDSJKLJKJKL e:\test> e:\test> */