[閒聊] 吸痂

看板NTUE-CS102作者 (球童Yanting)時間14年前 (2010/06/01 23:35), 編輯推噓7(703)
留言10則, 7人參與, 最新討論串1/1
關於 fstream .. 迷思1 : 一個 fstream 只能用對應一個檔案 → X fstream fin; fin.open("a.txt"); // fin >> fin.close(); fin.open("b.txt"); // fin >> fstream 是可以回收再利用的 迷思2 : eof 的使用 eof 建議在課本那個 get 的例子用就好 因為會有 \n結尾(空白行結束) 跟數字結尾 兩種情況 建議的使用方式 1 : if(file.fail()) break; 讀不到東西的時候 break; 例如 while(true) { file>>a; if(file.fail()) break; if(a==n) // else // } 建議的使用方式 2 : while(file>>a) 王老有說過 stream 物件在 >> 或 << 之後 會 return 回來 stream 所以如果他讀取失敗 那個while就會被return接收到錯誤而跳出while 例如 while(file>>a) { if(a==n) // else // } 迷思3 : fstream 先用 in 開檔 再用 out 開檔 結果檔案被清空寫不進去 → 這裡課本沒說 必須要先 clear 清除狀態 close 也沒用 fstream file("1.txt", ios_base::in); file>>a; file.close(); file.open("1.txt", ios_base::out); file<<a; // 會寫入失敗 file.close(); fstream 一旦被標示為 in 或者 out 他就被定型了 除非你 clear 他的狀態 解決方法1 : file.clear(); 解決方法2 : in的fstream就永遠用in, out的就永遠用out 建議的使用方法 我的習慣跟鳳郎講的很像 把 fstream 取成 fin 跟 fout 就好像 cin 跟 cout 一樣 就不會錯了 另外 建議用 ifstream 跟 ofstream 取代 fstream → 程式一開始寫 ifstream fin; ofstream fout; fin.open("num.txt"); fout.open("num2.txt"); // fin>>a; // fout<<a; fin.close(); fout.close(); fin.open("num2.txt"); fout.open("num.txt"); // fin>>a; // fout<<a; 這樣就不會錯了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 120.127.36.183

06/01 23:36, , 1F
等等補推
06/01 23:36, 1F

06/01 23:36, , 2F
未看先推
06/01 23:36, 2F

06/01 23:39, , 3F
看完推 超極實用!!
06/01 23:39, 3F

06/01 23:45, , 4F
推推推
06/01 23:45, 4F

06/01 23:46, , 5F
吸痂 囧
06/01 23:46, 5F

06/01 23:47, , 6F
推推推!!
06/01 23:47, 6F

06/02 00:35, , 7F
死完復活推
06/02 00:35, 7F

06/02 00:35, , 8F
阿辣洗剛死嗎
06/02 00:35, 8F

06/02 00:36, , 9F
好感傷唷
06/02 00:36, 9F

06/02 00:36, , 10F
科科
06/02 00:36, 10F
文章代碼(AID): #1C1IZ0ft (NTUE-CS102)