1. 程式人生 > >C++對ASCII檔案的操作例子

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> 
*/