linebuffer.h
来自「下棋」· C头文件 代码 · 共 61 行
H
61 行
// LineBuffer.h: interface for the CLineBuffer class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_LINEBUFFER_H__4D82D5A2_9DD2_11D4_9C31_0050BAB302C3__INCLUDED_)
#define AFX_LINEBUFFER_H__4D82D5A2_9DD2_11D4_9C31_0050BAB302C3__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
/*****************************************************************************/
/*线形缓冲区用于取代各种场合的线形内存使用。线形缓冲区原理跟MFC的CString类似, */
/*由于其封装各种操作函数和自动释放资源,增加安全性和可操作性,该系统中除基本数据*/
/*结构(CRingBuffer,CPingBuffer)外,其他线形内存的使用一律用该类取代 */
/**************************************************************************/
class CLineBuffer
{
public:
void AddData(void*pBuf,int nLen);
void BufferSet(BYTE val=0); //重新设置把缓冲区中的数据值(相当于memset)
BOOL SetLength(DWORD nLen); //设置缓冲区中有效数据的长度。
BOOL WriteToFile(CFile&file); //把全部数据写入到文件中。
BOOL WriteToFile(CFile&file,DWORD nLen); //把指定长度的数据写入到文件中。
BOOL ReadFromFile(CFile&file,DWORD nLen); //从文件中读入指定长度的数据到缓冲区。
void EmptyBuffer(); //清空缓冲区。
BOOL IsEmpty(); //检查缓冲区是否为空。
BOOL FromBuffer(LPBYTE pBuf,DWORD nLen); //直接利用pBuf生成线形缓冲区类。
BOOL operator ==(/*const*/CLineBuffer&buf);//,LPBYTE pBuf);
operator LPBYTE() {return m_pBuffer;} //通过LPBYTE类型转换以字符指针方式访问线形内存。
operator LPCSTR() {return (LPCSTR)m_pBuffer;} //通过LPBYTE类型转换以字符指针方式访问线形内存。
operator LPTSTR() {return (LPSTR)m_pBuffer;} //通过LPBYTE类型转换以字符指针方式访问线形内存。
operator void*(){return (void*)m_pBuffer;}
BYTE& operator[](int index) {return m_pBuffer[index];} //以数组方式访问缓冲区。
BYTE& operator[](BYTE index) {return m_pBuffer[index];} //以数组方式访问缓冲区。
BYTE& operator[](DWORD index) {return m_pBuffer[index];} //以数组方式访问缓冲区。
BYTE& operator[](WORD index) {return m_pBuffer[index];} //以数组方式访问缓冲区。
const CLineBuffer& operator=(CLineBuffer&buf);
const CLineBuffer& operator+=(CString&str)
{ AddData((void*)(LPCSTR)str,str.GetLength());
return *this; }
const CLineBuffer& operator+=(int val){AddData(&val,sizeof(int));return *this;}
const CLineBuffer& operator+=(DWORD val){AddData(&val,sizeof(DWORD));return *this;}
const CLineBuffer& operator+=(WORD val){AddData(&val,sizeof(WORD));return *this;}
const CLineBuffer& operator+=(BYTE val){AddData(&val,sizeof(BYTE));return *this;}
const CLineBuffer& operator+=(CLineBuffer&buf);
BYTE* GetBuffer();
DWORD GetCount();
CLineBuffer(LPVOID pBuf,int nLen);
CLineBuffer(CLineBuffer&other);
CLineBuffer(DWORD nLen);
CLineBuffer();
virtual ~CLineBuffer();
protected:
DWORD m_nMaxLength; //申请的内存长度,表示该线形内存的最大容量。
DWORD m_nLength; //内存空间中实际存放的数据长度。
LPBYTE m_pBuffer; //存放数据的物理内存地址,在初始化时通过new得到。
};
#endif // !defined(AFX_LINEBUFFER_H__4D82D5A2_9DD2_11D4_9C31_0050BAB302C3__INCLUDED_)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?