我的代码如下:
#include <cstdarg>
#include <string>
using std::string;
string error(char* s, ...)
{
va_list ap;
va_start(ap,s);
string err_str = s;
for (string::iterator iter = err_str.begin(); iter != err_str.end(); iter++)
{
if (*iter == '%')
{
char *pa = NULL;
char c = 0;
int i = 0;
char ia[10] = { 0 };
switch (*(iter + 1))
{
case 's':
pa = va_arg(ap, char*);
err_str.replace(iter,iter+2,pa);
break;
case 'c':
c = va_arg(ap, char);
err_str.erase(iter);
err_str.erase(iter);
err_str.insert(iter, c);
break;
case 'd':
i = va_arg(ap, int);
_itoa_s(i, ia,10, 10);
err_str.replace(iter, iter+2, ia);
break;
default:
break;
}
}
}
return err_str;
}
int _tmain(int argc, _TCHAR* argv[])
{
char* s = "nihao%s,wohao%c,tayehao%d";
string err_str = error(s," john",'z',324);
return 0;
}
主要是cstdarg宏的使用,以及string方法的使用