As a C++ programmer I sometimes need deal with memory buffers using techniques from C. For example:
char buffer[512];
sprintf(buffer, \"Hello %s!\", userName.c_s
Code for dynamic stack/heap buffer:
template
class DynamicBuffer
{
private:
const static size_t MAXSIZE=1000;
public:
DynamicBuffer() : m_pointer(0) {if (BUFSIZE>=MAXSIZE) m_pointer = new eltType[BUFSIZE];}
~DynamicBuffer() {if (BUFSIZE>=MAXSIZE) delete[] m_pointer;};
operator eltType * () { return BUFSIZE>=MAXSIZE ? m_pointer : m_buffer; }
operator const eltType * () const { return BUFSIZE>=MAXSIZE ? m_pointer : m_buffer; }
private:
eltType m_buffer[BUFSIZE