2012-11-23 94 views
0

我有一個程序逐行讀取文件的大小不等,我想用mmap但是如何用它來逐行讀取文件?用mmap逐行讀取一個文件

謝謝你的回答!

+0

你在編程C或C++? –

+1

您使用了C++和C標籤。您想要哪一個答案?他們是不同的語言。 –

+0

oups對不起,我在C++編程 – Arkerone

回答

5

一旦mmap()主編的文件,可以使文件可從現有的內存合適的流緩衝區中讀取數據,然後使用std::getline()

#include <streambuf> 
#include <string> 
#include <istream> 

struct membuf 
    std::streambuf { 
    membuf(char* start, size_t size) { 
     this->setg(start, start, start + size); 
    } 
}; 

int main() { 
    // mmap() the file yielding start and size 
    membuf  sbuf(start, size); 
    std:istream in(&sbuf); 
    for (std::string line; std::getline(in, line);) { 
     ... 
    } 
}