将课程的源代码 使用C++写了一部分

LINUX WINDOW均可运行

#ifndef MYDB_H
#define MYDB_H

#include <iostream>
#include <fstream>
#include <string>

#define NHASH_DEF   137    /* default hash table size */
#define FREE_LINK  NHASH_DEF
#define PTR_SZ      8
#define MAGIC_WORDS "MyDB_Start:\n"
#define SEPARATOE    "#"



class MyDB{
public:
    MyDB(const char* pathName) : hashOffset(0),
    dataOffset(0),writeDataLength(0),idxOffset(0),writeIdxLength(0) 
    {
        DBidxName = pathName;
        DBidxName += ".idx";
        DBdataName = pathName;
        DBdataName += ".dat";
    }
    void CloseDB(){
            idxFile.close();
            datFile.close();
        }
    ~MyDB(){ CloseDB();}

    bool Init();
    unsigned long HashFunc(const char *key);
    bool WriteData(const char* data);
    bool WriteIndex(const char* key);
    size_t GetIndexOffsetBykey(const char* key);
    long ReadPtr(std::fstream& fs, size_t offset);
    bool Writeptr(std::fstream& fs, size_t offset, const std::string& writeString);
    void TestFunc(const char* searchKey);
    size_t SearchLinkForKey(size_t offset, const char* key);
    std::string Query(const char* key);
private:

    bool DoWriteIndex(const char* key, const size_t nextOffset);
    bool OpenFileOrExit(std::fstream& fs, const std::string& fileName);
    size_t hashOffset;
    size_t dataOffset;
    size_t writeDataLength;
    unsigned long idxOffset;
    size_t writeIdxLength;
    MyDB& operator=(const MyDB&);
    MyDB(const MyDB&);
    std::string DBidxName;
    std::string DBdataName;
    std::fstream idxFile;
    std::fstream datFile;
};

#endif // MYDB_H
mydb.h

相关文章:

  • 2021-10-26
  • 2021-07-25
  • 2022-12-23
  • 2021-12-17
  • 2021-08-25
  • 2021-04-28
  • 2022-12-23
猜你喜欢
  • 2022-01-02
  • 2021-11-05
  • 2021-10-21
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-23
相关资源
相似解决方案