[問題] 讀txt內數字 不從第一個讀取

看板C_and_CPP (C/C++)作者 (還是朋友?)時間14年前 (2011/09/11 19:34), 編輯推噓1(1038)
留言39則, 6人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) devc++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) no 問題(Question): 就假設有兩個檔案內 有很多數字 1 2 3 4 5 第二個6 7 8 9 10 預期的正確結果(Expected Output): 希望是讀取(讀檔這邊確定正確) 第一次 1 6 第二次 2 7 . . 補充說明(Supplement): 都是數字...沒字串 因為用fstream寫 一個宣告(fstream s) 本來是用 while(!s.eof()) { s >> buf[i]; } 後再看是第幾個 是可以的 可是因為檔案內有幾萬組數字...這樣每次都要跑一次絕得很佔空間 想說s.seekg(i,ios::beg);後 在s>>buf中 每次出來都變成一樣了 是seekg 後我只能用read讀嗎@@? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.115.221

09/11 20:44, , 1F
不是.eof()嗎? end of file
09/11 20:44, 1F

09/11 20:50, , 2F
阿打錯..不過不想用那邊拉@@
09/11 20:50, 2F
※ 編輯: pigcat1315 來自: 114.32.115.221 (09/11 20:50)

09/11 21:34, , 3F
可不可以 跑一個數字時1 6記算一次 換第二個數字2 7就在計算
09/11 21:34, 3F

09/11 21:35, , 4F
跑一個迴圈就好
09/11 21:35, 4F

09/11 21:39, , 5F
格式正確的原始資料先放上來參考。
09/11 21:39, 5F

09/11 21:39, , 6F
樓上目前我是包在同一個迴圈下 讀檔1取 在讀檔2取
09/11 21:39, 6F

09/11 21:41, , 7F
po code ?
09/11 21:41, 7F

09/11 21:42, , 8F
會遇到一個問題是,如何保證 f1/f2 數字數量一定一樣?
09/11 21:42, 8F

09/11 21:48, , 9F
檔案數字量是固定的~
09/11 21:48, 9F
補上大致上的內容 for(int i=0;i<5;i++) //第幾個數字 { for(int j=0;j<5;j++) //這個是因為我檔案還有不同類別 { for(int k=0;k<5;k++)//那個檔案 { readvalue(path,buf,i); } } } void(string path ,int &buf ,int num) { fstream s; s.open(path,ios::in) for(int i=0;i<num+1;i++) s>>buf; s.close(); } 我現在 這樣也是可以 只是 是因為目前回圈小 當擴大幾萬時 ...怕for會跑的很吃力 想說seekg 能不能配合著用 ※ 編輯: pigcat1315 來自: 114.32.115.221 (09/11 22:02)

09/11 22:12, , 10F
你實際有幾個檔案要比對?
09/11 22:12, 10F

09/11 22:14, , 11F
6個類別 一個類別有150個檔案 1個裡面有5萬組數字
09/11 22:14, 11F

09/11 22:14, , 12F
我也很想放3為陣列...可是會爆炸Q0Q
09/11 22:14, 12F

09/11 22:16, , 13F
怎麼比對?
09/11 22:16, 13F

09/11 22:19, , 14F
根本還不知道真正的問題是什麼...
09/11 22:19, 14F

09/11 22:20, , 15F
我一直很搞不懂你說的「類別」到底是什麼?
09/11 22:20, 15F

09/11 22:21, , 16F
指的是 field 欄位? 還是 OO class ? 還是其他?
09/11 22:21, 16F

09/11 22:22, , 17F
類別和檔案關係為何?能否舉個例子出來?
09/11 22:22, 17F

09/11 22:22, , 18F
比對我還沒寫@@ ~就其實是要提出固定位置 數字來排序
09/11 22:22, 18F

09/11 22:24, , 19F
主要問題是「記憶體塞不下」嗎?
09/11 22:24, 19F

09/11 22:24, , 20F
不是程式上的類別 就是合計有900個檔要比對
09/11 22:24, 20F

09/11 22:25, , 21F
想省下時間~因為如果要比對第5萬組的數字 重頭讀會好久
09/11 22:25, 21F

09/11 22:26, , 22F
先全部轉 binary file 如何?
09/11 22:26, 22F

09/11 22:27, , 23F
你coding轉完檔的時間,絕對比你現在硬幹來得快。
09/11 22:27, 23F

09/11 22:49, , 24F
http://codepad.org/OJtTrgeU 轉完後用 fseek/fread
09/11 22:49, 24F

09/11 22:51, , 25F
改 fout.write((char*)(&number), sizeof(int)); 才對
09/11 22:51, 25F

09/11 23:01, , 26F
感恩大大~謝謝
09/11 23:01, 26F

09/11 23:09, , 27F
不過如果都是小數字呢?
09/11 23:09, 27F

09/11 23:32, , 28F
在記憶體不足情況下,以空間換時間最直接方式便為轉bin.
09/11 23:32, 28F

09/11 23:33, , 29F
即使小數字亦如此... 吧?
09/11 23:33, 29F

09/11 23:35, , 30F
都是小數字的話說不定檔案大小會倍增
09/11 23:35, 30F

09/11 23:36, , 31F
只要平均每個數字>100,就吃4bytes(加分隔符號),轉bin
09/11 23:36, 31F

09/11 23:38, , 32F
絕對划算。當然若平均是<10,檔案大小才會倍增.再以原po
09/11 23:38, 32F

09/11 23:38, , 33F
之目的論而言,要快速取得指定檔案位置,讀取數值,我認為
09/11 23:38, 33F

09/11 23:39, , 34F
在硬碟沒限制情況下,這方便顯得較為簡便,易懂,效果不錯
09/11 23:39, 34F

09/11 23:40, , 35F
故聲明了,mem不足,這是以空間(硬碟空間)換取時間之方式
09/11 23:40, 35F

09/12 16:11, , 36F
看不懂@@
09/12 16:11, 36F

09/12 16:13, , 37F
一個檔案是1 2 3 4 5 另一個是6 7 8 9 10 ?
09/12 16:13, 37F

09/12 19:37, , 38F
恩 樓上這是假設~這樣比較好懂
09/12 19:37, 38F

09/12 20:13, , 39F
那兩個檔案指標不行嗎?
09/12 20:13, 39F
文章代碼(AID): #1ER9pFwD (C_and_CPP)
文章代碼(AID): #1ER9pFwD (C_and_CPP)