Преобразование 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() не годится?