VC语言

本类阅读TOP10

·VC++ 学习笔记(二)
·用Visual C++打造IE浏览器(1)
·每个开发人员现在应该下载的十种必备工具
·教你用VC6做QQ对对碰外挂程序
·Netmsg 局域网聊天程序
·Windows消息大全
·VC++下使用ADO编写数据库程序
·VC++学习笔记(四)
·非法探取密码的原理及其防范
·怎样在VC++中访问、修改注册表

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
使用c++实现Format函数

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

前几日用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;
  }




相关文章

相关软件