[問題] 重複讀取同一筆檔案?

看板C_and_CPP (C/C++)作者 (aloha)時間16年前 (2010/03/24 17:36), 編輯推噓2(205)
留言7則, 5人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 我現在有一筆很大的資料,需要使用不同的參數去讀取該資料並做分析 要如何重覆讀取同一筆資料呢? 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Dev c++ 這是我目前的code: (請善用置底文標色功能) fin.open("xxxxxx"); for(double i=1;i<100;i+=1) {for(double j=1;j<100;j+=1) {for(double k=1;k<100;k+=1) {for(double l=1;l<100;l+=1) { fin.seekg(0,ios::beg); fin.read(xxxxx); .....做我的運算 fin.clear(); } } } } fin.close(); 補充說明: 由於我的檔案很大,所以開檔案並處理一筆參數就需要花相當久的時間 (約300多秒) 所以如果這樣開檔並處理下去的話的話...應該會天花地老 不知道該如何改善....我是想 是否可以只開一次 然後重覆的讀取就好了 (也就是把fin.open()放在for迴圈的外面,我有試過,但是只有第一筆參數會有值 其他筆參數得到的值都是0.....囧 ) 還是說...根本沒辦法只能這樣一次一次開一樣的檔案? (最新消息) 我改成新的寫法後 ...是可以讓檔案從頭打開 但是...每一筆資料還是得花將近五分鐘.....囧...... 這樣不就等於fin在裡面重開的道理一樣.....囧...... 有沒有其他解決方法 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.174.25 ※ 編輯: alohaiscool 來自: 140.112.174.25 (03/24 17:38)

03/24 17:44, , 1F
檔案有多大呀?? 小於1G的話就全讀進來放進RAM吧XD
03/24 17:44, 1F

03/24 17:49, , 2F
同意樓上! 用 memory mapping file 突破 1G 限制 XD
03/24 17:49, 2F
↑ 要如何使用?

03/24 17:49, , 3F
2.26 G
03/24 17:49, 3F

03/24 18:25, , 4F
把檔案起始位置記下來 需要時再移過去?
03/24 18:25, 4F
※ 編輯: alohaiscool 來自: 140.112.174.25 (03/24 18:53)

03/24 23:48, , 5F
fseek() ?
03/24 23:48, 5F

03/24 23:50, , 6F
樓上誤推了,沒看見原 po 已使用 seekg() :(
03/24 23:50, 6F

03/24 23:51, , 7F
考慮使用 database ?
03/24 23:51, 7F
文章代碼(AID): #1BgTqHs8 (C_and_CPP)
文章代碼(AID): #1BgTqHs8 (C_and_CPP)