Something went wrong. Try again.
Reactos
Something went wrong. Try again.
C
at listview
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112// File.h// This file is (C) 2002-2003 Royce Mitchell III and released under the BSD license
#ifndef FILE_H#define FILE_H
#ifdef WIN32# include <io.h>#elif defined(UNIX)# include <sys/stat.h># include <unistd.h>#endif#include <string>
class File{public: File() : _f(0) { }
File ( const char* filename, const char* mode ) : _f(0) { open ( filename, mode ); }
~File() { close(); }
bool open ( const char* filename, const char* mode );
bool seek ( long offset ) { return !fseek ( _f, offset, SEEK_SET ); }
int get() { return fgetc ( _f ); }
bool put ( int c ) { return fputc ( c, _f ) != EOF; }
std::string getline ( bool strip_crlf = false );
// this function searches for the next end-of-line and puts all data it // finds until then in the 'line' parameter. // // call continuously until the function returns false ( no more data ) bool next_line ( std::string& line, bool strip_crlf );
/* example usage:
bool mycallback ( const std::string& line, int line_number, long lparam ) { std::cout << line << std::endl; return true; // continue enumeration }
File f ( "file.txt", "rb" ); // open file for binary read-only ( i.e. "rb" ) f.enum_lines ( mycallback, 0, true ); */
bool enum_lines ( bool (*callback)(const std::string& line, int line_number, long lparam), long lparam, bool strip_crlf );
bool read ( void* data, unsigned len ) { return len == fread ( data, 1, len, _f ); }
bool write ( const void* data, unsigned len ) { return len == fwrite ( data, 1, len, _f ); }
size_t length();
void close();
bool isopened() { return _f != 0; }
bool eof() { return feof(_f) ? true : false; }
FILE* operator * () { return _f; }
static bool LoadIntoString ( std::string& s, const char* filename ); static bool SaveFromString ( const char* filename, const std::string& s, bool binary );
private: File(const File&) {} const File& operator = ( const File& ) { return *this; }
FILE * _f;};
#endif//FILE_H