bsp; x=-x;
}
return x;
}
itoa
char* itoa(int val,char* buf,unsigned int radix)
{
char *bufptr;
char *firstdig;
char temp;
unsigned int digval;
assert(buf != NULL);
bufptr = buf;
if (val < 0)
{
*bufptr++ = ‘-’; val = (unsigned int)(-(int)val);
}
firstdig = bufptr;
do
{
digval =(unsigned int) val % radix; val /= radix;
if (digval > 9)
{
*bufptr++ = (char)(digval – 10 + ‘a’);
}
else
{
*bufptr++ = (char)(digval + ’0′);
}
} while(val > 0);
*bufptr– = ‘\0′;//设置字符串末尾,并将指针指向最后一个字符
do //反转字符
{
temp = *bufptr; *bufptr = *firstdig; *firstdig = temp;
–bufptr; ++firstdig;
} while(firstdig < bufptr);
return buf;
}
String实现
已知String原型为:
class String
{
public:
//普通构造函数
String(const char *str = NULL)
//拷贝构造函数
String(const String &other)
//析构函数
~String(void);
//赋值函数
String & operator=(String &other) //oh,原题目打错了,string可是一个关键字
private:
char* m_str;
unsigned m_uCount;
};
分别实现以上四个函数
//普通构造函数
String::String(const char* str)
{
if(str==NULL) //如果str为NULL,存空字符串
{
m_str = new char[1]; //分配一个字节
*m_str = ‘\0′; //赋一个’\0′
}else
{
m_str = new char[strlen(str) + 1];//分配空间容纳str内容
strcpy(m_str, str); //复制str到私有成员m_str中
}
}
//析构函数
String::~String()
{
if(m_str!=NULL) //如果m_str不为NULL,释放堆内存
{
delete [] m_str;
m_str = NULL;
}
}
//拷贝构造函数
String::String(const String &other)
{
m_str = new char[strlen(other.m_str)+1]; //分配空间容纳str内容
strcpy(m_str, other.m_str); //复制other.m_str到私有成员m_str中
}
//赋值函数
String & String::operator=(String &other)
{
if(this == &other) //若对象与other是同一个对象,直接返回本身
{
&nb