Programming 版 (精华区)
发信人: SwordLea (飞刀李), 信区: Programming
标 题: 不用MFC的字符串类
发信站: 哈工大紫丁香 (2004年04月08日15:42:33 星期四), 站内信件
不想连接MFC库,也不想连接MSVCP60库,
所以不能使用CString和string。仿照
CString写了一个类,可以完成替换等
操作,自己试用没问题。
大家帮忙看看有没有bug,或者扩充些
新功能,比如Find,ToUpper等。
class CNoMFCString
{
private:
char * m_str;
public:
CSagaString()
{
m_str = NULL;
}
CSagaString(LPCTSTR lpStr)
{
m_str = NULL;
if (lpStr)
{
m_str = new char[strlen(lpStr) + 1];
strcpy(m_str ,lpStr);
}
}
~CSagaString()
{
if (m_str)
{
delete m_str ;
m_str = NULL;
}
}
BOOL Replace(LPCTSTR pSrc, LPCTSTR pTarget)
{
if ( m_str == NULL || pSrc == NULL) return false;
int nLen = strlen(m_str) ,nLenS = strlen(pSrc);
BOOL bFlag = false;
for (char *pTmp = strstr(m_str, pSrc); pTmp != NULL; pTmp =
strstr(m_str, pSrc))
{
if (pTarget)
{
int nLenT = strlen(pTarget);
if (nLenS >= nLenT)
{
char *p1 = pTmp;
p1 += nLenS;
strcpy(pTmp, pTarget);
strcat(pTmp, p1);
}
}
else
{
// 找到串清除
if (nLenS )
{
strcpy(pTmp , pTmp + nLenS);
}
}
bFlag = true;
}
return bFlag ;
}
int GetLength() { return strlen(m_str);}
operator LPCTSTR ()
{
return m_str;
}
};
// 测试用例
CNoMFCString str("Hello World!");
str.Replace("World","HIT");
// 输出结果:
Hello HIT!
--
如果程序员来到了程序设计版,
那么他就不会再牛,
更不会随便给予了。
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.246.241]
※ 修改:·SwordLea 於 04月08日15:44:03 修改本文·[FROM: 202.118.246.241]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:4.110毫秒