• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

使用c++实现Format函数

发布: 2007-7-01 20:40 | 作者: admin | 来源: | 查看: 15次 | 进入软件测试论坛讨论

领测软件测试网

前几日用bcb,发现它有个函数是Format,可以直接返回字符串,感觉非常好用,小我略想了一下,呵呵,用vc写了个相同功能的函数,代码很简单,仅供大家参考:

  __inline bool TrimRight(LPTSTR d)
  {
   if(d==NULL)
    return false;
   
   LPTSTR pstr=NULL;
   char* p=d;
   while(*p!=´\0´)
   {
    if(_istspace(*p)&&
     pstr==NULL)
    {
     pstr=p;
    }
    else
     pstr=NULL;
    p=_tcsinc(p);
   }
   if(pstr!=NULL)
   {
    *pstr=´\0´;
   }
   return true;
   
  }
  
  __inline bool TrimLeft(LPTSTR d)
  {
   if(d==NULL)
    return false;
   LPTSTR pstr=NULL;
   char* p=d;
   while(*p!=´\0´)
   {
    if(!_istspace(*p))
    {
     if(pstr==NULL)
     {
      pstr=p;
      break;
     }
     
    }
    p=_tcsinc(p);
    
   }
   if(pstr!=NULL&&
    pstr!=d)
   {
    MoveMemory(d,pstr,lstrlen(pstr));
   }
   return true;
  }
  
  
  struct fstring
  {
  public:
   fstring()
   {
    memset(str,0,sizeof(TCHAR)*5024);
   }

   fstring(char* src)
   {
    memset(str,0,sizeof(TCHAR)*5024);
    lstrcpy(str,src);
   }

   fstring(const char* src)
   {
    memset(str,0,sizeof(TCHAR)*5024);
    lstrcpy(str,src);
   }

   fstring(fstring& src)
   {
    memset(str,0,sizeof(TCHAR)*5024);
    lstrcpy(str,src.str);
   }
   
   bool CopyFromBuffer(PBYTE pBuf,UINT nSize)
   {
    if(nSize+1>5024)
     return false;
    memset(str,0,sizeof(TCHAR)*5024);
    CopyMemory(str,pBuf,nSize);
    str[nSize+1]=´\0´;
    return true;
    
   }
   
   bool TrimLeft()
   {
    return __farfhy::string::TrimLeft(str);
   }
   
   bool TrimRight()
   {
    return __farfhy::string::TrimRight(str);
   }

   bool EmptyBuffer()
   {
    memset(str,0,5024);
    return true;
   }

   bool ReadStrFromList(LPTSTR dst)
   {
    return __farfhy::string::ReadStrFromList(dst,str);
   }
   
   fstring& Format(LPCTSTR lpszText,...)
   {
    va_list list;
    va_start(list,lpszText);
    memset(str,0,5024);
    Format(lpszText,list);
    va_end(list);
    return *this;
   }

   fstring& operator=(LPCTSTR src);
   fstring& operator=(char* src);
   fstring& operator=(const fstring s);
   __inline operator char*( );
   __inline operator const char*();
   friend __inline fstring Format(LPCTSTR lpszText,...);
   
  private:
   fstring& Format(LPTSTR lpszText,va_list& list)
   {
    memset(str,0,sizeof(TCHAR)*5024);
    vsprintf(str,lpszText,list);
    return *this;
   }

   
   
   TCHAR str[5024];
  };
  
  
  fstring::operator char *()
  {
   return str;
  }
  
  fstring::operator const char *()
  {
   
   return str;
  }
  
  __inline fstring Format(LPCTSTR lpszText,...)
  {
   fstring fs;
   va_list list;
   va_start(list,lpszText);
   char teststr[5024],str[5024];
   memset(str,0,5024);
   memset(teststr,0,5024);
   sprintf(teststr,"%s\n",lpszText);
   fs.Format(teststr,list);
   va_end(list);
   return fs;
  }


延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网