2 回答
TA貢獻1864條經驗 獲得超2個贊
樓主可知道有個函數叫做 fseek ?
| 1 | int fseek(FILE * stream, long offset, int fromwhere); // in stdio.h/cstdio |
參數stream為文件指針,offset為偏移量,fromwhere為指針的起始位置。
參數 offset 為根據參數 fromwhere 來移動讀寫位置的位移數。參數 fromwhere 為下列其中一種:
SEEK_SET:從距文件開頭 offset 位移量為新的讀寫位置;
SEEK_CUR:以目前的讀寫位置往后增加 offset 個位移量;
SEEK_END:將讀寫位置指向文件尾后再增加 offset 個位移量。
當 fromwhere 為 SEEK_CUR 或 SEEK_END 時,參數 offset 允許負值的出現。對于以二進制方式打開的文件流,移動后的位置為 fromwhere + offset。
【返回值】成功返回 0,否則返回非 0 值。如果發生讀寫錯誤,將會設置設置文件錯誤標識。
如果為重定向,請在 stream 處填寫stdin 。
TA貢獻1995條經驗 獲得超2個贊
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 關注
- 783 瀏覽
添加回答
舉報
