c++二进制读写类

二进制写

#include <fstream> 
class FileBinaryWriter
{
public:
    FileBinaryWriter() {};
    FileBinaryWriter(std::string fileName)
    {
        writer.open(fileName.c_str(), std::ios::binary);
    }
    ~FileBinaryWriter()
    {
        if (writer.is_open())
        {
            writer.close();
        }
    }
    void open(std::string fileName)
    {
        writer.open(fileName.c_str(), std::ios::binary);
    }
    bool isOpen()
    {
        return writer.is_open();
    }
    void writeBaseType(const void* data, size_t size)
    {
        writer.write((const char*)data, size);
    }
    void writeString(std::string data)
    {
        writer.write(data.c_str(), data.size() + 1);
    }
    void close()
    {
        writer.close();
    }
private:
    std::ofstream writer;
};

二进制读

#include <fstream> 
class FileBinaryReader
{
public:
    FileBinaryReader() {};
    FileBinaryReader(std::string fileName)
    {
        reader.open(fileName.c_str(), std::ios::binary);
    }
    ~FileBinaryReader()
    {
        if (reader.is_open())
        {
            reader.close();
        }
    }
    void open(std::string fileName)
    {
        reader.open(fileName.c_str(), std::ios::binary);
    }
    bool isOpen()
    {
        return reader.is_open();
    }
    void close()
    {
        reader.close();
    }
    int nextInt()
    {
        int data;
        reader.read((char*)(&data), sizeof(int));
        return data;
    }
    std::string nextString()
    {
        std::string s;
        char c;
        do
        {
            c = nextChar();
            if (c == '\0')
            {
                break;
            }
            s += c;
        } while (true);
        return s;
    }
    float nextFloat()
    {
        float data;
        reader.read((char*)(&data), sizeof(float));
        return data;
    }
    double nextDouble()
    {
        double data;
        reader.read((char*)(&data), sizeof(double));
        return data;
    }
    bool nextBool()
    {
        bool data;
        reader.read((char*)(&data), sizeof(bool));
        return data;
    }
    char nextChar()
    {
        char c;
        reader.read(&c, sizeof(char));
        return c;
    }
private:
    std::ifstream reader;
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容