files.h

来自「各种加密算法的源代码」· C头文件 代码 · 共 59 行

H
59
字号
#ifndef FILES_H
#define FILES_H

#include <fstream.h>

#include "cryptlib.h"
#include "filters.h"

class FileErr {};
class OpenErr : public FileErr {};
class ReadErr : public FileErr {};
class WriteErr : public FileErr {};

class FileSource : public Source
{
public:
    FileSource(istream &in=cin, boolean pumpAndClose=FALSE,
               BufferedTransformation *outQueue = new ByteQueue);
    FileSource(const char *filename, boolean pumpAndClose=FALSE,
               BufferedTransformation *outQueue = new ByteQueue);

    istream& GetStream() {return in;}

    unsigned int Pump(unsigned int size);
    unsigned long PumpAll();

private:
    ifstream file;
    istream& in;
};

class FileSink : public Sink
{
public:
    FileSink(ostream &out=cout);
    FileSink(const char *filename);

    ostream& GetStream() {return out;}

    void InputFinished();
    void Put(byte inByte)
    {
        out.put(inByte);
#ifdef THROW_EXCEPTIONS
        if (out.bad())
          throw WriteErr();
#endif
    }

    void Put(const byte *inString, unsigned int length);

private:
    ofstream file;
    ostream& out;
};

#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?