[問題] getline與讀檔的一些問題

看板C_and_CPP (C/C++)作者 (la8day)時間13年前 (2013/04/10 00:00), 編輯推噓0(006)
留言6則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) g++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 無 讀檔常常是用迴圈把整個檔案讀完 像是while(getline(...)) 但我想寫一個函式,呼叫一次就會去讀一行 第一次呼叫讀第一行、第二次呼叫會接著讀第二行...以此類推 但寫一寫發現一些問題,程式碼在最底下 就是我只會把開檔的iftresm infile宣告成全域變數才能一行接一行的讀下去= = 這樣感覺非常奇怪..... 宣告在readfile()裡面當然就永遠只讀到第一行 宣告在main裡面,卻不知道怎麼把 infile 傳給 readfile() (查了之後還是不太明白它物件的形態...對物件導向不太熟) ifstream infile("test.txt"); // global variable....= = void readfile() { string s1; getline( infile,s1 ); // do something... } int main() { readfile(); // wait and do something readfile(); // wait and do something readfile(); } 總之就是想寫個函式隨時呼叫就往下讀一行,可是開檔卻只會開在全域變數... ---------------------------- 後來用readfile(ifstream& infile) 解決了 不過不是很明白其中含義,也不太確定這樣的方法好不好 看來我物件導向還要再多念念....冏 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 112.104.202.49 ※ 編輯: la8day 來自: 112.104.202.49 (04/10 00:19)

04/10 00:50, , 1F
這個方法還滿標準的啊...
04/10 00:50, 1F

04/10 00:51, , 2F
就像在寫 C 的時候把 FILE* 指標給傳進函式裡是一樣的意思
04/10 00:51, 2F

04/10 00:52, , 3F
寫在readfile()就是區域變數阿
04/10 00:52, 3F

04/10 00:57, , 4F
所以這是傳遞整個物件的意思?
04/10 00:57, 4F

04/10 01:13, , 5F
Pass by reference,C++ 的語法。
04/10 01:13, 5F

04/10 01:28, , 6F
感謝大家 我再去翻一下書...
04/10 01:28, 6F
文章代碼(AID): #1HP3ipXY (C_and_CPP)
文章代碼(AID): #1HP3ipXY (C_and_CPP)