fstream_h

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

fstream.h

#if _MSC_VER > 1000

#pragma once

#endif

#ifdef __cplusplus

#ifndef _INC_FSTREAM

#define _INC_FSTREAM

#if !defined(_WIN32) && !defined(_MAC)

#error ERROR: Only Mac or Win32 targets supported!

#endif

#ifdef _MSC_VER

// Currently, all MS C compilers for Win32 platforms default to 8 byte alignment.

#pragma pack(push,8)

#include

#endif // _MSC_VER

/* Define _CRTIMP */

#ifndef _CRTIMP

#ifdef _DLL

#define _CRTIMP __declspec(dllimport)

#else /* ndef _DLL */

#define _CRTIMP

#endif /* _DLL */

#endif /* _CRTIMP */

#include

#ifdef _MSC_VER

// C4514: "unreferenced inline function has been removed"

#pragma warning(disable:4514) // disable C4514 warning

// #pragma warning(default:4514) // use this to reenable, if desired

#endif // _MSC_VER

typedef int filedesc;

class _CRTIMP filebuf : public streambuf {

public:

static const int openprot; // default share/prot mode for open

// optional share values for 3rd argument (prot) of open or constructor

static const int sh_none; // exclusive mode no sharing

static const int sh_read; // allow read sharing

static const int sh_write; // allow write sharing

// use (sh_read | sh_write) to allow both read and write sharing options for setmode member function static const int binary;

static const int text;

filebuf();

filebuf(filedesc);

filebuf(filedesc, char *, int);

~filebuf();

filebuf* attach(filedesc);

filedesc fd() const { return (x_fd==-1) ? EOF : x_fd; }

int is_open() const { return (x_fd!=-1); }

filebuf* open(const char *, int, int = filebuf::openprot);

filebuf* close();

int setmode(int = filebuf::text);

virtual int overflow(int=EOF);

virtual int underflow();

virtual streambuf* setbuf(char *, int);

virtual streampos seekoff(streamoff, ios::seek_dir, int);

// virtual streampos seekpos(streampos, int);

virtual int sync();

private:

filedesc x_fd;

int x_fOpened;

};

class _CRTIMP ifstream : public istream {

public:

ifstream();

ifstream(const char *, int =ios::in, int = filebuf::openprot);

ifstream(filedesc);

ifstream(filedesc, char *, int);

~ifstream();

streambuf * setbuf(char *, int);

filebuf* rdbuf() const { return (filebuf*) ios::rdbuf(); }

void attach(filedesc);

filedesc fd() const { return rdbuf()->fd(); }

int is_open() const { return rdbuf()->is_open(); }

void open(const char *, int =ios::in, int = filebuf::openprot);

void close();

int setmode(int mode = filebuf::text) { return rdbuf()->setmode(mode); } };

class _CRTIMP ofstream : public ostream {

public:

ofstream();

ofstream(const char *, int =ios::out, int = filebuf::openprot);

ofstream(filedesc);

相关文档
最新文档