# まー、今更ですが。
自宅にある VC2003 で WTL7.5 final を入れて、新しい WTL の中身と ATL の中身を眺めていた時の話。
ATL::CString::AppendFormat()
が増えていて便利ーと思った。
CString 使っていると、整形文字列を追加したいことがよくあるので、そのたびに一時オブジェクトを作って
CString::operator+=()
していたので。
しかしなぜかこのメソッドが WTL7.5 になかった。
ATL に比べてこれだけ外す理由が思いつかないのだけど。
VC++6/WTL7.0 の頃は、MFC::CString
に対して、WTL::CString::Append( int n )
があって優位だったのに…。
なぜ実装しなかったのかは謎だが、まぁ、WTL はオープンソースなヘッダ群なので早速、
WTL::CString::AppendFormat()
を作成しました。
実際のところは、WTL::CString
のメソッドを順番に呼ぶだけなのでそんなに難しくはなく。
※宣言は省略。定義だけ。なお、変数名は WTL の流儀にあわせてあります。
// [atlmisc.h]
// UDT RAPT : like ATL::CString::AppendFormat
inline BOOL __cdecl CString::AppendFormat( LPCTSTR lpszFormat, ... )
{
ATLASSERT( _IsValidString( lpszFormat ) );
va_list argList;
va_start( argList, lpszFormat );
CString string;
BOOL bRet = string.FormatV( lpszFormat, argList );
va_end( argList );
operator += ( string );
return bRet;
}
// ENDE