string Format


比如:

m_strFileName.Format("%d时%0.2d分%0.2d秒",system_time.wHour,system_time.wMinute,system_time.wSecond);

解释下m_strFileName.Format()用法演变过程

void __cdecl Format( _Printf_format_string_ UINT nFormatID, ... );

模版

template< typename BaseType, class StringTraits >
inline void __cdecl CStringT<BaseType, StringTraits>::Format( _Printf_format_string_ UINT nFormatID, ... )
{
CStringT strFormat( GetManager() );
ATLVERIFY( strFormat.LoadString( nFormatID ) );


va_list argList;
va_start( argList, nFormatID );
FormatV( strFormat, argList );
va_end( argList );
}


还有一种比较流行的,如下:

void __cdecl Format( _Printf_format_string_ UINT nFormatID, ... )
 {
  using namespace ATL;
  CStringT strFormat( GetManager() );
  ATLENSURE( strFormat.LoadString( nFormatID ) );

  va_list argList;
  va_start( argList, nFormatID );
  
  ThisType tmp;
  tmp.FormatV( strFormat, argList );
  *this = tmp;

  va_end( argList );
 }
va_start详细
/*  基本过程:
      va_list arglist; //声明一个变量来转换参数列表

  va_start(arglist,format); //初始化变量

  va_end(arglist); //结束变量列表,和va_start成对使用

  可以根据va_arg(arglist,type)取出参数 其中type可以是int,char等等

或  va_start(arglist, format);
     status = vsnprintf(buf, 1024, format, arglist);  //有些编译器要求写成_vsnprintf

     va_end(arglist);

    vsnprintf()函数: 
    int vsnprintf (char *s, size_t size, const char *template, va_list ap) 
       本函数跟snprintf函数很类似,只是将参数的数目可变的,变成了一个指针的列表。
   */




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值