1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
#include <string>
#include <stdarg.h>
std::string FormatString( const char *szFormat, va_list &arg_ptr )
{
if(szFormat==NULL) AfxThrowUserException();
std::string strRet;
int nSize=_vscprintf(szFormat,arg_ptr)+1;
char *szRet= new char[nSize];
vsprintf_s( szRet,nSize,szFormat,arg_ptr);
strRet.assign(szRet);
delete []szRet;
return strRet;
}
std::string FormatString( const char *szFormat, ... )
{
if(szFormat==NULL) AfxThrowUserException();
std::string strRet;
va_list arg_ptr;
va_start(arg_ptr,szFormat);
strRet.swap(FormatString( szFormat,arg_ptr ));
va_end(arg_ptr);
return strRet;
}
std::wstring FormatString(const wchar_t *szFormat,va_list &arg_ptr )
{
if(szFormat==NULL) AfxThrowUserException();
std::wstring strRet;
int nSize=_vscwprintf(szFormat,arg_ptr)+1;
wchar_t *szRet= new wchar_t[nSize];
vswprintf_s(szRet,nSize,szFormat,arg_ptr);
strRet.assign(szRet);
delete []szRet;
return strRet;
}
std::wstring FormatString(const wchar_t *szFormat,... )
{
if(szFormat==NULL) throw (new CInvalidArgException());
std::wstring strRet;
va_list arg_ptr;
va_start(arg_ptr,szFormat);
strRet.swap(FormatString(szFormat,arg_ptr ));
va_end(arg_ptr);
return strRet;
}
template <typename tplstring=std:string,typename T=char >
class stringex : public tplstring
{
public:
void Format(const T *szFormat, ...)
{
if(szFormat==NULL) AfxThrowUserException();
va_list arg_ptr;
va_start(arg_ptr,szFormat);
swap(::FormatString(szFormat,arg_ptr ));
va_end(arg_ptr);
}
}; |
Partager