主题:【原创】编程心得 -- 荆棘探兴
像我这样多年没写程序的,用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;
}
- 相关回复 上下关系8
压缩 2 层
🙂............... workmywork 字0 2010-05-06 20:16:51
🙂英文好,读原版 workmywork 字16 2010-05-06 20:16:48
🙂这个题是很难的,特别是异常处理处理之类的东东。很多 老成都 字85 2008-07-19 00:21:53
🙂你这个问题充分说明了C++是一种比较复杂的语言
🙂感谢参与!建议你看一下我推荐的书, 1 使用尽量中文 字668 2008-07-06 21:01:49
🙂think in c++ 不好 littles 字72 2008-07-01 20:20:11