2 回答

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超2個(gè)贊
樓主可知道有個(gè)函數(shù)叫做 fseek ?
1 | int fseek ( FILE * stream, long offset, int fromwhere); // in stdio.h/cstdio |
參數(shù)stream為文件指針,offset為偏移量,fromwhere為指針的起始位置。
參數(shù) offset 為根據(jù)參數(shù) fromwhere 來移動(dòng)讀寫位置的位移數(shù)。參數(shù) fromwhere 為下列其中一種:
SEEK_SET:從距文件開頭 offset 位移量為新的讀寫位置;
SEEK_CUR:以目前的讀寫位置往后增加 offset 個(gè)位移量;
SEEK_END:將讀寫位置指向文件尾后再增加 offset 個(gè)位移量。
當(dāng) fromwhere 為 SEEK_CUR 或 SEEK_END 時(shí),參數(shù) offset 允許負(fù)值的出現(xiàn)。對于以二進(jìn)制方式打開的文件流,移動(dòng)后的位置為 fromwhere + offset。
【返回值】成功返回 0,否則返回非 0 值。如果發(fā)生讀寫錯(cuò)誤,將會(huì)設(shè)置設(shè)置文件錯(cuò)誤標(biāo)識(shí)。
如果為重定向,請?jiān)?stream 處填寫stdin 。

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
C++不支持直接定位到某一行。不過可以通過先定位到文件開始,然后把之前所有行均讀出的方式,使文件定位到具體行。
具體代碼如下:
1 2 3 4 5 6 7 8 9 10 11 12 | ifstream & seek_to_line(ifstream & in, int line) //將打開的文件in,定位到line行。 { int i; char buf[1024]; in.seekg(0, ios::beg); //定位到文件開始。 for(i = 0; i < line; i ++) { in.getline(buf, sizeof(buf));//讀取行。 } return in; } |
- 2 回答
- 0 關(guān)注
- 638 瀏覽
添加回答
舉報(bào)