string in_path = "/home/XX/a.prototxt";ios
stream = ifstream(in_path, std::ios::binary);文檔
std::streampos pos = 0;get
while(true){string
pos = stream.tellg()io
std::istream& ret = stream.getline(line, sizeof(line));stream
stream.seekg(pos)二進制
}數據
以上這段代碼,可以重複讀文檔中的位置爲pos的行,文件
在有時候,咱們須要從文檔流中的特定位置讀取數據,那麼能夠用tellg獲得這個特定的位置,用seekg將文件流位置設爲pos。while
即:
stream.tellg()可以給出當前讀到了文檔中哪個位置,
stream.seekg(pos)可以設置下次開始讀的位置爲pos。
但可以使用tellg和seekg精肯定位的前提是,文檔是以二進制形式打開的,即std::ios::binary。由於系統每次對文檔中的符號的解讀不同,因此會致使seekg(pos)時,不能定位到咱們想要的位置。