自己写的代码 有点粗糙,有时间,好好整整。
template<class T>
class JBuffer
{
};
template<>
class JBuffer<char>
{
public:
JBuffer():size(0){}
JBuffer(size_t size){Resize(size);}
template<class T>
JBuffer(const JBuffer<T>& j)
{
size = j.size;
buffer.resize(size);
memcpy(buffer,j,size);
}
void Resize(size_t size){this->size = size;buffer.resize(size,0);}
void Add(const char* data,size_t size){memcpy(&buffer[0],data,size);}
void Add(const char* data,size_t datasize,int offset){
if( (offset + datasize) > size)
{
throw exception("buffer 溢出");
}
memcpy(&buffer[0]+ offset,data,datasize);}
char At(size_t pos){return buffer[pos];}
void Set(size_t pos,char value)
{
if(pos > buffer.size()) throw exception("buffer 溢出!");
buffer[pos] = value;
}
operator char*(){return & buffer[0];}