Преобразование std::vector в char*

std::vector <char> rawdata;

char *getData(){
    char dt[rawdata.size()];
    for(int i=0;i<=rawdata.size();i++){
        dt[i]=rawdata[i];
    }
    return dt;
}

Пытался сделать так, но функция ничего не возвращает


Ответы (1 шт):

Автор решения: Harry

Нельзя возвращать указатель на локальный массив - по выходу из функции его уже просто нет - кончилось его время жизни, и указатель указывает в никуда, приводя к неопределенному поведению.

Кроме того, стандарт не разрешает объявлять массив, размер которого не известен во время компиляции.

Раз у вас С++ - используйте string, например,

string getData()
{
    return string(rawdata.begin(),rawdata.end());
}

А вообще, многое зависит от того, что у вас в rawdata - С-строка, или просто массив символов...

P.S. А для ваших целей rawdata.data() не годится?

→ Ссылка