我编写了一个处理可变参数输入参数的函数,如下所示 -
std::string ReturnMessage(const char * format, ...)
{
va_list vl;
va_start(vl, format);
std::stringstream ss;
for(int i = 0; format[i] != '\0'; ++i)
{
switch(format[i])
{
case 's':
{
char *str = NULL;
str = va_arg(vl, char *);
if(*str)
{ //Getting memory access violation here
ss << str;
}
}
break;
}
}
val_end(vl);
return ss.str()
}
否当用户将非字符串值(ReturnMessage(“%s%s”,“Testing”,100))分配为字符串并且该str被分配给Bad Pointer并且if(* str)语句抛出访问冲突异常时在这里有效。但是如何防止无效字符串被添加到stringstream中?