如何防止无效/损坏的字符串赋值

时间:2013-12-23 08:44:04

标签: c++

我编写了一个处理可变参数输入参数的函数,如下所示 -

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中?

0 个答案:

没有答案