C++對ASCII檔案的操作例子
阿新 • • 發佈:2019-01-30
從鍵盤讀入一行字元,把其中的字母字元依次放在磁碟檔案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> */