vc程式設計讀取文字資料
我們通常把資料存諸在
txt檔案上,但是我們通常要把這些資料取出來並進行處理。下面我將介紹一種在
vc++
應用程式中讀取文字資料的方法。
一.前言
因為經常要處理地質方面的資料。但是很多資料它不是直接存貯在資料庫檔案(如
access
檔案等),而是存貯在
txt檔案。經常有同學問我怎麼通過程式設計讀取實現文字檔案中的資料。其實存貯在
txt檔案也有它的好處,不像讀取
access
檔案那樣要註冊資料來源,設定比較麻煩,編寫讀取程式也比較複雜。
二.程式原理
首先我們知道假如要進行的檔案操作只是簡單的讀寫整行的字串,那麼最好使用
cstdiofile
,用它來進行此類操作非常方便。因此我們便很自然想到:首先我們把文字檔案的每行資料讀到乙個緩衝區,然後使用
sscanf
把它轉化為字元格式。
那麼具體該怎麼做呢?比如在乙個
txt檔案裡每一行資料格式是這樣的:
a
1 a2 a
3 a3 ......an
那麼讀取的主體**是:
cstdiofile file;//
定義乙個
cstdiofile
類變數file
cstring
filedata; //
定義乙個
cstring
,作為乙個緩衝區
/*定義n
個臨時字串變數,大小依據實際情況,這裡暫設為
10
*/char
tempstr1[10],tempstr2[10]......tempstrn[10];
file.readstring(filedata); //
將一行資料讀到緩衝區
/*將該行資料的
n個字元讀到
n個臨時字串變數
*/
sscanf(filedata,"%s %s %s %s ......%s",tempstr1,tempstr2......tempstrn);
這種讀法的乙個好處是對文字格式要求不嚴,如下面的格式也可以
(前面可有未知個空格)
a
1 a2
(兩個資料之間也可有未知個空格)
a
3 a3 ......an
三.程式設計步驟
下面我以乙個單文件程式來具體說明我的做法。
該程式的主要功能是讀取文字檔案的座標資料,然後在客戶區里用直線將這些座標連起來,並顯示。
1、啟動
visual c++6.0
,生成乙個單文件的工程,將該工程命名為
readcoodinate。2、
新增乙個「讀取文字資料」的選單項。
3、給檢視類新增兩個
public
變數:carraym_pointarray; //
用於記錄座標點資料
int m_pointnum;//
用於記錄座標點個數,在檢視類建構函式中初始化為0。
4、給「讀取文字資料」新增相應的單擊訊息響應函式。**如下:
void creadcoodinateview::onreaddata()
cdc *pdc = getdc(); //
獲取裝置環境
;
/*根據座標點繪出直線
*/
for (i = 0;i
releasedc(pdc);//
使用完後,釋放裝置環境
}
}
程式執行結果的效果圖如下:
1.選取乙個
txt檔案
2.單擊確定後繪製直線,如下圖:
其中示例資料檔案的格式是這樣的:(第一行為座標個數,餘下的是座標點資料)
5
1020
3040
4585
100120
200300
這個程式的乙個優點是對文字資料格式並不嚴格,你可以把資料編輯成下面形式,但讀出來的效果是一樣的,(只要
x座標和
y座標中間有乙個空格就可以了)
5
1020
3040
4585
100120
200300
三.小結
上面只是小小的示例,讀者朋友可以將文字資料傳化為其它形式的資料(如將字元型資料轉化為浮點型),進行更複雜的資料處理,其中原理是一樣的。上面程式的編譯環境是:
win2000
,vc++6.0
。
在VC 應用程式中讀取文字資料
我們通常把資料存諸在 txt檔案上,但是我們通常要把這些資料取出來並進行處理。下面我將介紹一種在 vc 應用程式中讀取文字資料的方法。一 前言 因為經常要處理地質方面的資料。但是很多資料它不是直接存貯在資料庫檔案 如 access 檔案等 而是存貯在 txt檔案。經常有同學問我怎麼通過程式設計讀取實...
在VC 應用程式中讀取文字資料
我們通常把資料存諸在 txt檔案上,但是我們通常要把這些資料取出來並進行處理。下面我將介紹一種在 vc 應用程式中讀取文字資料的方法。一 前言 因為經常要處理地質方面的資料。但是很多資料它不是直接存貯在資料庫檔案 如 access 檔案等 而是存貯在 txt檔案。經常有同學問我怎麼通過程式設計讀取實...
在VC 應用程式中讀取文字資料
朱金燦 我們通常把資料存諸在txt檔案上,但是我們通常要把這些資料取出來並進行處理。下面我將介紹一種在vc 應用程式中讀取文字資料的方法。一 前言 因為經常要處理地質方面的資料。但是很多資料它不是直接存貯在資料庫檔案 如access檔案等 而是存貯在txt檔案。經常有同學問我怎麼通過程式設計讀取實現...