五千年(敝帚自珍)

主题:【原创】编程心得 -- 荆棘探兴

共:💬198 🌺258
全看分页树展 · 主题 跟帖
家园 你这个问题充分说明了C++是一种比较复杂的语言

像我这样多年没写程序的,用C写几个函数还很自然,但C++的语法和各种定义实在有点头大了。

int strlen(char* psz)

{

int len = 0;

while (*psz++)

++len;

return len;

}

char* strcpy(char* dst, char* source)

{

char* p = dst;

while (*dst++ = *source++) ;

return p;

}

char* strcat(char* s1, char* s2)

{

char* p = s1;

while (*s1)

++s1;

while (*s1++ = *s2++);

return p;

}

class string

{

public:

string();

string(char* psz);

string(const string& str);

~string();

string& operator=(const string& str);

int length();

char* get_str();

private:

char* m_pBuffer;

};

int string::length()

{

return strlen(m_pBuffer);

}

char* string::get_str()

{

return m_pBuffer;

}

string::string() : m_pBuffer(0)

{

}

string::string(char* psz) : m_pBuffer(0)

{

if (psz) {

int len = strlen(psz);

m_pBuffer = (char*)::malloc(len+1);

strcpy(m_pBuffer, psz);

}

}

string::string(const string& str) : m_pBuffer(0)

{

if (str.m_pBuffer) {

m_pBuffer = (char*)::malloc(str.length()+1);

strcpy(m_pBuffer, str.m_pBuffer);

}

}

string& string::operator=(const string& str)

{

if (this != &str) {

::free(m_pBuffer);

m_pBuffer = 0;

m_pBuffer = (char*)::malloc(strlen(str.m_pBuffer)+1);

strcpy(m_pBuffer, str.m_pBuffer);

}

return *this;

}

string::~string()

{

if (m_pBuffer) {

::free(m_pBuffer);

m_pBuffer = 0;

}

}

string operator+(const string& s1, const string& s2)

{

char* pBuffer = (char*)::malloc(s1.length() + s2.length() + 1);

strcpy(pBuffer, s1.get_str());

strcat(pBuffer, s2.get_str());

string s(pBuffer);

::free(pBuffer);

return s;

}

全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河