使用c++实现Format函数

原创 2003年09月26日 22:57:00

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

C++ format 函数

C++ format 函数 C++编程 Format是一个很常用,却又似乎很烦的方法,以下是它的完整概貌,以供大家查询之用: 一、字符串 首先看它的声明: function Form...
  • nowhaha
  • nowhaha
  • 2014年08月20日 19:14
  • 18155

C++中Format用法

vc中format的用法: 以CString的Format举例,第一个参数是格式化字符串,就像printf的第一个参数一样,用%d表示int,%s表示char*,%u表示unsigned int...
  • e_wsq
  • e_wsq
  • 2015年01月23日 20:43
  • 4194

Boost 的 C++ 格式化輸出函式庫:Format

不错的文章,原帖:viml.nchc.org.tw/blog/paper_info.php?CLASS_ID=1&SUB_ID=1&PAPER_ID=194 這篇是之前預告過的 Bo...
  • yacper
  • yacper
  • 2012年09月27日 18:11
  • 4155

C++中Format的用法

Format函数使用说明一. 字符串 函数的声明: function Format(const Format: string; const Args: array of const): strin...
  • u013719984
  • u013719984
  • 2015年10月13日 14:06
  • 1259

C++基础——格式化输出

似乎很少有人强调C++的格式化输出的问题,那是因为因为c++的编译器默默地做着许多格式化的动作,以保证C++ Style格式化输出与C-style的格式化的一个根本不同,C++style的格式化输出是...
  • lanchunhui
  • lanchunhui
  • 2015年11月07日 18:28
  • 1245

[C/C++标准库]_[初级]_[如何实现std::string自己的Format(sprintf)函数]

场景: 1. C语言有自己的sprintf函数,但是这个函数有个缺点,就是不知道需要创建多大的buffer, 这时候可以使用snprintf函数来计算大小,只要参数 buffer为NULL, co...
  • infoworld
  • infoworld
  • 2015年07月01日 10:50
  • 4194

C++ 自制string的format函数

C++ 自制string的format函数
  • w442863748
  • w442863748
  • 2016年10月28日 10:33
  • 3211

C++格式化输出

1. C++中格式控制       在C++中,说到保留小数点后几位有效数字,就会想起setprecision,马上去cplusplus上查了下有关setprecision的资料,看了后明白了,懒得逐...
  • qq_22194315
  • qq_22194315
  • 2016年10月25日 22:19
  • 279

关于c++的Format函数详解

  • 2009年05月27日 10:46
  • 57KB
  • 下载

C++中Format用法

vc中format的用法: 以CString的Format举例,第一个参数是格式化字符串,就像printf的第一个参数一样,用%d表示int,%s表示char*,%u表示unsigned int...
  • e_wsq
  • e_wsq
  • 2015年01月23日 20:43
  • 4194
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用c++实现Format函数
举报原因:
原因补充:

(最多只允许输入30个字)