求教各位高手啊!急急!

pzhbyqsk 2008-03-05 09:37:12
class StringHelper
{
public:
static TPtr TrimLeft(const TDesC& aDes);
static TPtr TrimRight(const TDesC& aDes);
static TPtr Trim(const TDesC& aDes);
};

这是类的头文件,TrimLeft() 是把左边的空格去掉。TrimRight()是把右边的空格去掉,Trim()是把左右的都去掉,请问怎么实现啊??
...全文
185 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
dyw 2008-03-07
  • 打赏
  • 举报
回复
楼主的实现代码用起来怎样?

参考此文:http://blog.csdn.net/dyw/archive/2008/03/07/2157480.aspx
whhema 2008-03-05
  • 打赏
  • 举报
回复
你可以找出第一个非空格和最后一个非空格的字符的位置,然后用Right,Left,Mid就能返回指针了
dyw 2008-03-05
  • 打赏
  • 举报
回复
然后调用aDes.TrimRight();
dyw 2008-03-05
  • 打赏
  • 举报
回复
你的参数是不可修改的,无法实现。
可改为:
void TrimRight(TDes& aDes);
等等。

anel 2008-03-05
  • 打赏
  • 举报
回复
symbian 定义TPtrC和TPtr有目的,两者意义不同,互相代替会有问题的
anel 2008-03-05
  • 打赏
  • 举报
回复
symbian 定义TPtrC和TPtr有目的,两者意义不同,互相代替会有问题的
pzhbyqsk 2008-03-05
  • 打赏
  • 举报
回复
TPtrC是可以转化城TPtr的 参见代码
pzhbyqsk 2008-03-05
  • 打赏
  • 举报
回复
已解决:
TPtr StringHelper::TrimLeft(const TDesC& aDes)
{
TInt i = 0 ;
TBuf<100> buf;
buf.Append(aDes);

while( i < buf.Length() && (buf[i] == TChar(' ') || buf[i] == TChar('\t')) )
{
i++;
}

TPtr iptr((TUint16*)(buf.Right(buf.Length() - i).Ptr()), buf.Right(buf.Length() - i).Length(),buf.Right(buf.Length() - i).Length());
return iptr;

}

TPtr StringHelper::TrimRight(const TDesC& aDes)
{
TInt i = aDes.Length()-1;
TBuf<100> buf1;
buf1.Append(aDes);

while ( i>=0 && (buf1[i] == TChar(' ') || buf1[i] == TChar('\t') ) )
{
i--;
}

TPtrC iptr1=buf1.Left(i+1);
TPtr iptr( (TUint16*)(iptr1.Ptr()), iptr1.Length(),iptr1.Length());
return iptr;
}

TPtr StringHelper::Trim(const TDesC& aDes)
{
TPtrC result=TrimRight(aDes);
return TrimLeft(result);
}
anel 2008-03-05
  • 打赏
  • 举报
回复
可参考:
TDes::TrimLeft
TDes::TrimRight

TPtrC不可能转化成TPtr
pzhbyqsk 2008-03-05
  • 打赏
  • 举报
回复
返回的是一个TPtrC类型的指针,请问怎么把他转化成为TPtr类型的?

3,119

社区成员

发帖
与我相关
我的任务
社区描述
塞班系统(Symbian系统)是塞班公司为手机而设计的操作系统,它的前身是英国宝意昂公司的 EP ( Electronic Piece of cheese)操作系统。
社区管理员
  • Symbian社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧