The following classes were developed to simplify my life and clean up my code
and perhaps they can do the same for you. They are simple classes, but allow
an easy load of a string resource ( important for internationalization ) as
well as an easy way to format strings.
Class Definitions
// Load resource class CResString : public CString { public: CResString(): CString() {}; CResString(UINT nResID) { Init(); VERIFY(LoadString(nResID) != 0); _ASSERTE( m_pchData ); }; void operator () (UINT nResID) { Init(); VERIFY(LoadString(nResID) != 0); _ASSERTE( m_pchData ); } }; // Format class CFmtString : public CString { public: CFmtString(): CString() {}; CFmtString( char *szFormat, ... ) { Init(); va_list argList; va_start( argList, szFormat ); FormatV( szFormat, argList ); }; CFmtString( UINT uResID, ... ) { Init(); va_list argList; CResString sFormat( uResID ); va_start( argList, sFormat ); FormatV( sFormat, argList ); }; void operator () ( char *szFormat, ... ) { Init(); va_list argList; va_start( argList, szFormat ); FormatV( szFormat, argList ); } void operator () ( UINT uResID, ... ) { Init(); va_list argList; CResString sFormat( uResID ); va_start( argList, sFormat ); FormatV( sFormat, argList ); } };
Examples of Using the CResString Class
CResString sSection(IDS_DATAOBJECTSECTION); // Use sSection // ... // Load another string sSection(IDS_INVALIDOBJECT);
Example of Using the CFmtString Class
CFmtString sCommand(_T("SELECT %s FROM %s WHERE %s = %d"), sColumn1, sTable, sColumn2, nID ); // Use sQuery // ... // Format another sCommand(_T("UPDATE %s SET %s = %d WHERE %s = %d"), sTable, sColumn1, nValue, sColumn2, nID );