看板 EE_DSnP 關於我們 聯絡資訊
有一個 string 的 getline 滿好用的 是個 global function 可以這樣用 getline(ifstreamObj, stringVar); >> 補充一下 這個 getline return 的東西 跟 ifstreamObj 的 getline return 的東西一樣 所以也可以用 if ( getline(ifstreamObj, stringVar) ) 來判斷他讀完了沒 如果讀完了 裡面呼叫 void* 的結果就會變成 0 而要隨時知道讀到的 pattern 的 line number 你只需要把原本的 while( ifstreamObj >> pattern ) 改成 while( yourRead( ifstreamObj, pattern, lineNum ) ) 這個可以是另外寫一個 class, overload 他的 operator (); 他必須要有以下的功能 (1) 在 ifstreamObj 讀完的時候必須 return false 就是說回傳值要跟原本的 ifstreamObj >> pattern 效果一樣 而且也要維持原本 ifstreamObj >> pattern 的功能 (2) 在 ifstreamObj 換行的時候 要把 lineNum++ 要怎麼寫,你應該猜得到在這個 class 要有一個暫存的 buffer 這個 buffer 可以是 istringstream 我是覺得滿好用的 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.218.45
ric2k1:嗯, 這個建議不錯! 06/03 01:03
※ 編輯: Ultor 來自: 140.112.218.45 (06/03 01:21)
of:阿 如果這樣寫的話的確是方便許多 只是我的架構幾乎要整個重寫 06/03 01:23
sa901119:請問一下為何我用這個func 傳的參數明明type都對 06/04 21:39
sa901119:但compiler就一直說我錯 06/04 21:39
sa901119:還specify另一個istream的public member function要我用 06/04 21:40
sa901119:這是為什麼啊 = = 06/04 21:40
sa901119:但我用dev-c++ 來compile卻會過 結果也正確耶... 06/04 21:40
Ultor:要傳 reference 06/04 22:32
Ultor:啊 你是說哪個 func? 06/04 22:33
sa901119:compiler一直以為我傳的是 inFile.geline(str, num)這個 06/05 01:56
sa901119:然後說: invalid conversion from void* to char** 06/05 01:57
Ultor:include <string> 看看 ? 06/05 13:02
sa901119:我找到原因了 06/05 20:22
sa901119:應該是compiler的問題 06/05 20:22
sa901119:我用 std::getline 就可以了 = = 06/05 20:22
sa901119:謝謝 06/05 20:22
muxiv: 但compiler就一 http://yofuk.com 07/12 00:18