#include<iostream>
#include<string>
#include "inStream"
using namespace std;
int main ()
{
system("chcp 1252");
system("cls");
int x=10;
inStream inStr;
inStr<<x;
inStr << 25;
inStr << 'A';
inStr << "hello";
inStr << 2.8;
for (int i=0;i<20;i++)
{
cout << static_cast<char> (inStr.buffer_data[i]); // buffer_data is public
return 0;
}
Here is my Stream Buffer Class:
// Stream buffer class for storing stream data
// streambuffer.h
class buffer
{
public:
size_t buffer_size;
char *buffer_data, *write_ptr, *read_ptr;
public:
buffer()
{
buffer_size = 1024*1024;
buffer_data = new char[buffer_size];
write_ptr = buffer_data;
read_ptr=write_ptr;
} // constructor ends here
void setbufferdata(int variable_data, size_t variable_size)
{
if (write_ptr+(varialbe_size) > write_ptr+(buffer_size) )
throw std::invalid_argument ( "size exceed from buffer size" );
else
{
memcpy(write_ptr,&variable_data,variable_size);
for (int i=0; i<sizeof(variable_data); i++ )
write_ptr++;
} // else ends here
} // setBufferdata ends here
};
Here is my inStream class which inherits buffer class:
// inStream.h
#include "streambuffer.h"
class inStream: public buffer
{
inStream& operator<<(int rhs)
{
buffer::setbufferdata(rhs,sizeof(rhs));
return *this;
}
inStream& operator<<(char rhs)
{
buffer::setbufferdata(rhs,sizeof(rhs));
return *this;
}
inStream& operator<<(char* rhs)
{
buffer::setbufferdata(rhs,sizeof(rhs));
return *this;
}
inStream& operator<<(float rhs)
{
buffer::setbufferdata(rhs,sizeof(rhs));
return *this;
}
}; // class ends here
I am using MSVS 2010 , and when I saw in watch window my data is place there.. But when I try to retrive data it is showing aliens symbols . I want to know why it is happeing to me ? any reason
Aucun commentaire:
Enregistrer un commentaire