自己写string 字符串处理类(二)
}
else
{
return strlen((const char*)m_pData);
}
//return strlen()
}
void YoungStringA::assign(const char* p_data, int iLen)
{
if( p_data == NULL ) p_data = "";
iLen = (iLen < 0 (int) strlen(p_data) : iLen);
if( iLen < MAX_LOCAL_STRING_LEN )
{
if( m_pData != m_Buffer )
{
free(m_pData);
m_pData = m_Buffer;
}
}
else if( iLen > length() || m_pData == m_Buffer ) //
{
if( m_pData == m_Buffer )
m_pData = NULL;
m_pData = (char*)realloc(m_pData, (iLen + 1) * sizeof(char));
}
memset(m_pData,0, iLen);
strncpy(m_pData, p_data, iLen);
}
YoungStringA::YoungStringA(const char * sz)
{
clear();
assign(sz);
}
YoungStringA::YoungStringA(const char * sz,int iLen)
{
clear();
assign(sz,iLen);
}
YoungStringA::YoungStringA(YoungStringA& src)//拷贝构造函数
{
assign(src.m_pData);
}
YoungStringA& YoungStringA::operator=(const char* p_data)
{
if (p_data == NULL)
{
clear();
}
else
{
assign(p_data);
}
return *this;
}
YoungStringA& YoungStringA::operator=(string str)
{
assign(str.c_str());
return *this;
}
YoungStringA::operator char*()
{
return m_pData;
}
YoungStringA::operator const char*()
{
return m_pData;
}