#include <boost/iostreams/device/mapped_file.hpp> // for mmap
#include <algorithm> // for std::find
#include <iostream> // for std::cout
#include <cstring>
#include <sys/stat.h>
FileManager{
long long getFileSize(std::string fileName){
struct stat buf;
stat(fileName.c_str(), &buf);
return buf.st_size;
}
std::string getContent(std::string fileName){
}
std::string getNthLine(std::string fileName, unsigned int line){
std::ifstream in(filename.c_str());
std::string s;
//for performance
s.reserve(10000000000);
//skip N lines
for(unsigned int i = 0; i < line; ++i){
std::getline(in, s);
}
std::getline(in, s);
return s;
}
uintmax_t getNumLines(std::string fileName){
boost::iostreams::mapped_file mmap(fileName, boost::iostreams::mapped_file::readonly);
auto f = mmap.const_data();
auto l = f + mmap.size();
uintmax_t numLines = 0;
while (f && f!=l){
if ((f = static_cast<const char*>(memchr(f, '\n', l-f)))){
numLines++, f++;
}
}
return numLines;
}
}