封装字符串的Format操作

相信即使再讨厌MFC的朋友也不会把厌恶牵扯到CString类上,
而且CString现在也提升为ATL和MFC的共享类。用CString类,
当然不能忘记它的Format方法,其用于格式化字符串。示例操作如下:
CString  strDemo;
strDemo.Format( _T("数字为:%d, 字符串为:%s"), 1, strOther );

很简单的使用.但我总觉得用的太多代码不美观(或许我有点洁癖吧),我总觉得一行代码
的事用两行代码有点多余,于是我封装了StringFormatEx类.该类的封装风格借鉴了
ATL的字符串转换类的风格(如CA2TEX、CT2WEX等),
代码如下:
/*
* 格式化字符串
*/
template
<   int  t_nBufferLength  =   128   >
class  StringFormatEx
{
public :
    StringFormatEx( PCTSTR pszFormat, ) 
throw ()
    {
        va_list ptr; 
        va_start(ptr, pszFormat);

        CString strFormat;
        strFormat.FormatV( pszFormat, ptr );

        ASSERT( t_nBufferLength 
>  strFormat.GetLength() );

        _stprintf_s( m_szBuffer, strFormat );

        va_end(ptr);
    }

    
operator  LPCTSTR()  throw ()
    {
        
return  (m_szBuffer);
    }

private :
    TCHAR m_szBuffer[t_nBufferLength];

private :
    StringFormatEx( 
const  StringFormatEx &  )  throw ();
    StringFormatEx
&   operator = const  StringFormatEx &  )  throw ();
};

typedef StringFormatEx
<>  StringFormat;

使用示例:

//void Test( LPCTSTR lpsz ){}

Test( StringFormat( _T("数字为:%d, 字符串为:%s"), 1, strOther  ) );

转载于:https://www.cnblogs.com/fangkm/archive/2009/03/31/1426532.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值