Einzelnen Beitrag anzeigen
Alt 18.07.2008, 09:10   #7
rev.antun
Inventar
 
Registriert seit: 02.04.2002
Alter: 60
Beiträge: 5.198

Mein Computer

Standard

nie mehr schule

Code:
 while(*p)
{
if(*p == '%')
{
p++;

switch(*p)
{
case 'f':
{
double d = va_arg(ap, double);
buffer <<d;
break;
}
case 'd':
{
int num = va_arg(ap, int);
buffer <<num;
break;
}
case 's':
{
char * str = va_arg(ap, char *);
buffer <<str;
break;
}
case 'a':
{
p++;
if(*p == 'f') 
{
double * arr = va_arg(ap, double *);
int length = va_arg(ap, int);

buffer <<"{";
for(int i = 0; i <length; i++)
buffer <<arr[i] <<(i == length - 1 ? "" : ", ");
buffer <<"}";
}
else if(*p == 'd')
{
int * arr = va_arg(ap, int *);
int length = va_arg(ap, int);

buffer <<"{";
for(int i = 0; i <length; i++)
buffer <<arr[i] <<(i == length - 1 ? "" : ", ");
buffer <<"}";
}
else
{
int address = va_arg(ap, int);
p--;
buffer <<"[pointer@" <<address <<"]";
}
break;
}
case ':': 
{
int address = va_arg(ap, int);
buffer <<"[object@" <<address <<"]";
break;
}
case 'p':
{
int arg = va_arg(ap, int);
buffer <<(arg != 0 ? "true" : "false");
break;
}
case 'X':
{
buffer <<"%";
break;
}
default:
{
int var = va_arg(ap, int); 
buffer <<"[unknown]";
}
}
}
else
buffer <<*p;

p++; 
}
va_end(ap); 
return buffer.str();

rev.antun ist offline   Mit Zitat antworten